zoukankan      html  css  js  c++  java
  • day3_homework

    1、写一个产生密码的程序,输入次数,输入多少次就产生多少条数据,要求密码必须包含大写字母、小写字母和数字,长度8位,不能重复
    # 需求分析:
    # a、循环,输入什么就循环多少次
    # b、随机来取值,是从所有的大写字幕,小写字母,数字里面来取,A-Z,a-z,0123456789
    # c、长度8位,就是随机取8个
    # d、不能重复,放到一个list里面,再判断,如果产生的数字不在这个list的话,就是不重复
    # e、写到文件里就行了

    import random
    import string
    count = input('请输入你要产生多少条密码:').strip()
    passwords = []
    for p in range(int(count)):
    nums = random.sample(string.digits, 1) # 随机取1位数字
    lowercase = random.sample(string.ascii_lowercase, 1) # 随机取1位小写字母
    uppercase = random.sample(string.ascii_uppercase, 1) # 随机取1位大写字母
    other = random.sample(string.ascii_letters + string.digits, 5) # 随机取5位
    res = nums + lowercase + uppercase + other # 产生8位密码
    # print(('res', res)) # 打印看res的类型,是否是字符串,不是字符串就转成字符串
    res = ''.join(res)
    if res not in passwords: # 判断是否重复
    passwords.append(res + ' ')
    with open('passwords.txt', 'a+', encoding='utf8') as f:
    f.writelines(passwords)

    string.ascii_letters  # 按住Ctrl,单击鼠标,会看到string的用法,如下:
    ascii_letters = string.ascii_lowercase + string.ascii_uppercase
    digits = '0123456789'
    punctuation = """!"#$%&'()*+,-./:;<=>?@[]^_`{|}~"""

    2、把上周的注册程序改一下,用字典保存
    字典格式如下:
     {
       "niuhanyang":{"passwd":"123456","role":1"},
       "jmy":{"passwd":"123456","role":2"}
     }
    # role如果是1的话,代表管理员,如果是2代表普通用户,注册的用户都是普通用户
    # 需求分析
    # a、先要从原来的数据库(咱们的user_info.txt文件)里面,把已经存在的数据读出来
    # b、让用户输入账号、密码和确认密码
    # c、判断用户是否存在,如果不存在的话,才可以注册
    # d、判断密码和确认密码输入一致的话,注册成功
    # e、把新的用户写到这个userinfo字典中
    # f、把新的userinfo替换旧的
    # g、保存文件
    # user_info.txt = {'niuhanyang': {'passwd': '123456', 'role': '1'}, 'aaa': {'passwd': '12', 'role': '2'}}
    # 第2和第4题都用到
    user_info.txt,第2题是事先造两个用户,然后注册成功添加进去

    f = open('user_info.txt', 'a+', encoding='utf8')
    f.seek(0)
    user_info = eval(f.read()) # 存的是从文件里面读出来的用户信息
    user_num = len(user_info) # 存的最开始的字典长度
    for i in range(3):
    username = input('请输入用户名:').strip()
    password = input('请输入密码:').strip()
    c_password = input('请再次输入密码:').strip()
    if len(username) == 0:
    print('用户名不能为空')
    elif username not in user_info:
    if password == c_password and len(password) > 0:
    user_info[username] = {'password': password, 'role': '2'}
    print('注册成功!')
    break
    else:
    print('密码不能为空,两次输入密码必须一致!!!')
    else:
    print('你注册的用户已经存在!')
    if user_num == len(user_info): # 证明没有注册成功,字典长度没有变化
    pass # 占位符,什么都不做
    else:
    f.seek(0)
    f.truncate() # 清空文件
    f.write(str(user_info))
    f.flush() # 把文件从内存写到磁盘里
    f.close()

    3、有一个文件,里面有一些敏感词汇,如下,如果输入这些词,就用**代替,然后输出,例如输入今天没吃饭,碰到一个傻逼,原来那个sb是小明,输出今天没吃饭,碰到一个**,原来那个**是小明。

       傻逼
       傻b
       煞笔
       煞比
       sb
       傻B
       shabi

    # 需求分析
    # a、读出来所有敏感词,把敏感词事先存在一个文件里
    # b、循环这些敏感词,判断是不是在用户输入的字符串里面
    # c、如果在就替换

    f = open('zuoye3.txt', encoding='utf8')  # 事先把敏感词存入zuoye3.txt,默认的方式就是读
    talk = input('请输入一句话:').strip()
    for line in f: # line代表zuoye3.txt里面的每个元素
    new_line = line.strip() # new_line代表zuoye3.txt每行,每行包括 ,要把 去掉
    if new_line in talk:
    talk = talk.replace(new_line, '**')
    print('和谐之后的语句是:%s' % talk)
    f.close()

    4、注册和登录连上,能用你之前注册的用户来登录
    # 需求分析
    # a、读原来的用户
    # b、判断就行了
    # c、说白了就是字典取值

    f = open('user_info.txt', encoding='utf8')
    user_info = eval(f.read())
    for i in range(3):
    username = input('请输入账号:').strip()
    password = input('请输入密码:').strip()
    if len(username) == 0 and len(password) == 0:
    print('账号、密码不能为空!')
    elif username in user_info: # 用户存在
    if user_info[username]['password'] == password:
    print('恭喜%s登录成功!' % username)
    break
    else:
    print('密码错误,登录失败!')
    else:
    print('用户名不存在!')
    else:
    print('输入已达到错误次数,程序退出!')
  • 相关阅读:
    解决跨域问题 cors~ JSONP~
    session,cookie,sessionStorage,localStorage的区别~~~前端面试
    数据库索引的理解
    script的按需加载
    es6 笔记
    JS 工具函数
    JS Error
    数组方法重写:forEach, map, filter, every, some, reduce
    JS: GO 和 AO
    立即执行函数
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8484333.html
Copyright © 2011-2022 走看看