用户登录注册升级版
【一】需求介绍
-
用户可以注册,并将注册信息临时保存起来,登陆时可根据指定用户名或密码进行登陆
-
设定好用户名和密码,用户通过输入指定的用户名和密码进行登陆
-
最大尝试次数:用户最多尝试猜测3次
-
最大尝试次数后:如3次后,问用户是否继续登陆
- 如果回答Y或y,就再给3次机会,提示【还剩最后三次机会】
- 3次都猜错的话登录结束
- 如果回答N或n,登陆结束!
- 如果格式输入错误,提示【输入格式错误,请重新输入:】
-
如果猜对了,登陆结束!
【二】功能分析
- 用户选择注册功能,存储用户名和密码
- 设定猜测次数
- 用户名和密码正确
- 登陆成功
- 用户名和密码错误
- 输入 y 进行二次尝试
- 输入 n 退出登陆,程序结束
【三】代码实现
【1】注册功能
# 【1】设定存储用户信息的 列表
user_data_list = []
# 【一】注册功能
while True:
# 【2】用户输入用户名和密码
username_register_input = input("请输入用户名 :>>>> ")
password_register_input = input("请输入密码 :>>>> ")
# 【3】拼接用户信息
user_data = f"{username_register_input}|{password_register_input}"
# 【4】存储到用户信息列表
user_data_list.append(user_data)
# 查看用户信息列表
# print(user_data_list)
age_input = input("请输入是否继续注册(Y/N) :>>>> ")
if age_input == 'Y' or age_input == 'y':
print(f"欢迎再次注册!")
elif age_input == 'N' or age_input == 'n':
print(f"感谢您的注册!下次再会!")
break
else:
print(f"意料之外的错误哦!")
break
【2】登陆功能
# 设定尝试次数(最多尝试3次)和初识尝试次数(1)和标志位
can_choice = 3
count = 1
tag_login = True
# 【1】获取用户信息字典 (假定已存储用户信息)
user_data_list = ['dream|521', 'hope|369']
# 【二】登录功能
while count <= can_choice and tag_login:
# 每尝试一次,循环次数 + 1 (可尝试次数 - 1 )
count += 1
# 【2】用户输入用户名和密码
username_input = input("请输入用户名 :>>>> ").strip()
password_input = input("请输入密码 :>>>> ").strip()
# 【3】遍历字典,拿到每一个元素
for user_data in user_data_list:
true_username, true_password = user_data.split('|')
# 【7】校验输入的用户名和密码是否一致
if true_username == username_input and password_input == true_password:
print(f"用户 {username_input} :>>>> 登陆成功!")
# 登陆成功后程序结束 -- 标志位重置为 False
tag_login = False
break
else:
print(f"用户 {username_input} :>>>> 用户名或密码错误!")
print(f"还剩 :>>>> {can_choice + 1 - count} 次机会")
# 【8】增加重试机制 : 输入 Y 将尝试次数重置为1,否则直接退出
if count == can_choice + 1:
age_input = input("请输入是否继续尝试(Y/N) :>>>> ")
if age_input == 'Y' or age_input == 'y':
print(f"欢迎再次尝试!祝您成功!")
count = 1
elif age_input == 'N' or age_input == 'n':
print(f"感谢您的尝试!下次再会!")
break
else:
print(f"意料之外的错误哦!")
break
【3】查看用户信息功能
# 【1】获取用户信息字典 (假定已存储用户信息)
user_data_list = ['dream|521', 'hope|369']
print(user_data_list)
【4】功能整合
# 设定功能字典
func_list = '''
--- 请输入序号选择功能 ---
1.注册功能
2.登录功能
3.查看全部信息
'''
# 设定尝试次数(最多尝试3次)和初识尝试次数(1)和标志位
can_choice = 3
count = 1
# 【1】用户信息列表
user_data_list = []
while True:
print(func_list)
function_id = input("请输入功能ID(n退出) :>>>> ")
if function_id == 'n' or function_id == 'N':
print(f"感谢您的使用!")
break
function_id = int(function_id)
# 【一】注册功能
if function_id == 1:
while True:
# 【2】用户输入用户名和密码
username_register_input = input("请输入用户名 :>>>> ")
password_register_input = input("请输入密码 :>>>> ")
# 【3】拼接用户信息
user_data = f"{username_register_input}|{password_register_input}"
# 【4】存储到用户信息列表
user_data_list.append(user_data)
# 查看用户信息列表
# print(user_data_list)
age_input = input("请输入是否继续注册(Y/N) :>>>> ")
if age_input == 'Y' or age_input == 'y':
print(f"欢迎再次注册!")
elif age_input == 'N' or age_input == 'n':
print(f"感谢您的注册!下次再会!")
break
else:
print(f"意料之外的错误哦!")
break
# 【二】登录功能
elif function_id == 2:
tag_login = True
while count <= can_choice and tag_login:
# 每尝试一次,循环次数 + 1 (可尝试次数 - 1 )
count += 1
# 【2】用户输入用户名和密码
username_input = input("请输入用户名 :>>>> ").strip()
password_input = input("请输入密码 :>>>> ").strip()
# 【3】遍历字典,拿到每一个元素
for user_data in user_data_list:
true_username, true_password = user_data.split('|')
# 【7】校验输入的用户名和密码是否一致
if true_username == username_input and password_input == true_password:
print(f"用户 {username_input} :>>>> 登陆成功!")
# 登陆成功后程序结束 -- 标志位重置为 False
tag_login = False
break
else:
print(f"用户 {username_input} :>>>> 用户名或密码错误!")
print(f"还剩 :>>>> {can_choice + 1 - count} 次机会")
# 【8】增加重试机制 : 输入 Y 将尝试次数重置为1,否则直接退出
if count == can_choice + 1:
age_input = input("请输入是否继续尝试(Y/N) :>>>> ")
if age_input == 'Y' or age_input == 'y':
print(f"欢迎再次尝试!祝您成功!")
count = 1
elif age_input == 'N' or age_input == 'n':
print(f"感谢您的尝试!下次再会!")
break
else:
print(f"意料之外的错误哦!")
break
# 【3】查看用户全部信息
elif function_id == 3:
print(user_data_list)
【四】参考代码
# 1.先定义一个用于存储用户数据的列表
data_list = []
# 2.循环打印程序的功能 供用户选择执行
while True:
# 3.打印程序中所有的功能编号
print("""
1.注册
2.登录
3.查看所有用户信息
""")
# 4.获取用户想要执行的功能编号
choice = input('请输入功能编号>>>:').strip()
# 5.判断用户想要执行的功能
if choice == '1':
# 6.获取用户的用户名和密码 针对一些小的判断逻辑 你们自己去考虑
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 6.1.判断用户名不能冲突
for user in data_list: # 'jason|123' 'tony|321'
# 6.2.如果考虑密码是用户名 用户名是其他
if username == user.split('|')[0]:
print('用户名已存在')
break
else:
# 7.将用户名和密码拼接到一起
user_data = f'{username}|{password}' # 'jason|123'
# 8.添加到列表中
data_list.append(user_data)
# 9.提示用户注册成功
print(f'{username}注册成功')
elif choice == '2':
# 10.获取用户名和密码
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 11.两种判断思路 思路1:先比对用户名 之后比对密码 思路2:直接拼接比对整体结构
user_data1 = f'{username}|{password}'
# 12.循环比对
for data in data_list:
if user_data1 == data:
print('登录成功')
break
else:
print('用户名或密码错误')
elif choice == '3':
print(data_list)
else:
print('你能不能好好的输 眼瞎是吧!!!')
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17857404.html