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 + '\n')
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每行,每行包括\n,要把\n去掉
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('输入已达到错误次数,程序退出!')