周末综合作业:(代码块挡住的注释部分可以点击代码块然后按键盘‘→’查看)
2.1:编写用户登录接口
1、输入账号密码完成验证,验证通过后输出"登录成功"
user_info = ['lance','123']
username = input('请输入账号:')
password = input('请输入密码:')
if username == user_info[0] and password == user_info[1]:
print('登录成功')
else:
print('账号密码错误')
2、可以登录不同的用户
# 方法一
user_info = [
['lance1','123'],
['lance2','123'],
['lance3','123'],
]
username = input('请输入账号:')
password = input('请输入密码:')
for i in user_info:
if i[0] ==username and i[1] == password:
print('登录成功')
break
else:
print('账号密码错误')
break
# 方法二:多用户推荐字典类型
user_info = {
'lance1':'123',
'lance2':'123',
'lance3':'123',
}
username = input('请输入账号:')
password = input('请输入密码:')
if username in user_info.keys() and password in user_info.values():
print('登录成功')
else:
print('账号密码错误')
3、同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)
user_info = {
'lance1': '123',
'lance2': '123',
'lance3': '123',
}
tag = 0
i = 0
while i < 3:
username = input('请输入账号:')
if username in user_info.keys():
password = input('请输入密码:')
if password in user_info.values():
with open(r'db.txt', mode='rt', encoding='utf-8') as f: # 输入账号密码后判断该账号是否在黑名单当中
msg = f.read().split()
for line in msg:
x, y = line.split(':')
if x == username:
print('对不起,你的账号已经被锁定!')
break
else:
print('登录成功')
break
else:
print('密码输入错误,请重新输入!')
i += 1
if i == 3:
print('您已连续输错三次密码,该账号锁定,无法登陆')
with open(r'db.txt',mode='at',encoding='utf-8') as f:
f.write('{x}:{y}
'.format(x=username,y=user_info.get(username))) # 确认三次输入密码之后,将该账号和所其对应的密码一起拉入黑名单,需要注意,是初始确定的密码,不是输入密码!!
f.close()
else:
print('账号错误')
2.2:编写程序实现用户注册后,可以登录(一次性,每次运行需重新注册)
msg = """
0 退出
1 登录
2 注册
"""
print(msg)
q = 0
with open('data.txt', mode='wt', encoding='utf-8') as f: # 主要为了防止用户不注册直接登陆,所以提前创建账号信息文件
f.write('')
f.close()
while True:
cmd = input('请输入命令:>>').strip()
if not cmd.isdigit():
print('必须输入命令编号的数字,傻叉')
continue
if cmd == '0':
break
elif cmd == '1':
while q < 3:
user_name = input('请输入您的账号:').strip()
pass_word = input('请输入您的密码:').strip()
with open('data.txt', mode='rt', encoding='utf-8') as f:
i = f.read().split()
if i != '': # 与一开始创建信息文件相呼应,好做if判断,如果啥都没有就说明还没有注册需要提醒用户
for c in i:
a, b = c.split(':')
if user_name == a and pass_word == b:
print('登陆成功')
break
else:
q +=1
else:
print('登陆失败')
break
else:
print('你还没有注册账号哦,先注册再登录吧!')
break
else:
print('连续三次登录失败')
elif cmd == '2':
username = input('请输入您的注册账号:').strip()
password = input('请输入您的注册密码:').strip()
with open('data.txt', mode='at', encoding='utf-8') as f:
f.write('{x}:{y}
'.format(x=username, y=password)) # 在写入后面要加
哦,要不然注册多用户切分列表会出大问题
f.close()
else:
print('输入的命令不存在')
反思:
自己之前培养的习惯不能丢,不管是什么代码,都需要写程序流程图加快速度!!
写代码不够熟练,并不能各种随意转换!
学的内容尚且还少,还有许多瑕疵,和我的想法还有点偏差,以后学到了回来补回!!!