思考:先前制作的注册系统已经可以把用户注册的用户名与密码进行字典内存储,登录时只需用if else语句进行用户登录时输入的用户名与先前存储的用户名的进行比对即可,密码同理。
实践过程:
1.首先我想把值进行比对,但我发现字典中的键不能单独调用(我不会),所以我选择建立一个新的空字典进行用户名和密码的录入即都录入成值以便调用。
usernameandkey={}
usernameandkey['usernamed']=f'{username}'
usernameandkey['userkey']=f'{key}'
2.建立一个while循环来实现错误时的继续输入,用input()来获取用户输入的用户名(密码)。这时用if else来实现用户名和密码与之前注册时输入数据的比对。之后我先写一个if else来比对账户,在账户比对成功后再用input()来进行密码的录入并再用一个if else进行密码的比对,都比对成功后break退出,否则继续循环。
while True:
enterusername=input("username:")
if usernameandkey['usernamed']==enterusername:
enterkey=input("key:")
if enterkey==usernameandkey['userkey']:
print("登录成功")
break
else:
print("密码错误")
else:
print("账户名不存在")
注册登录整体实践结果:
#注册系统
user_0={}
while True:
username=input("username:")
key=input("key:")
surekey=input("surekey:")
if key==surekey:
user_0[f'{username}']=f'{key}'
#print(user_0)为了检验是否录入成功
break
else:
print("n the key and the surekey not same")
#登录系统
usernameandkey={}
usernameandkey['usernamed']=f'{username}'
usernameandkey['userkey']=f'{key}'
#print(usernameandkey)作用同上
while True:
enterusername=input("username:")
if usernameandkey['usernamed']==enterusername:
enterkey=input("key:")
if enterkey==usernameandkey['userkey']:
print("登录成功")
break
else:
print("密码错误")
else:
print("账户名不存在")
反思:在看了其他同学的作品后我发现了我的作业的不足:
1. 即在有多个用户名时我的代码存储起来相当麻烦,并且不能进行有效的比对
2.没有考虑到用户名为空或者密码为空的情况
3.没有考虑到用户名重复的问题
4.页面语言混乱没有考虑到用户体验问题
修改前的思考:
1.创建一个names列表用来存储所有注册人的用户名
2.将len()填入if else中来检验用户输入的用户名和密码是否为空的情况
3.用name in names 来实现
4.将页面语言全部统一为中文
修改实践结果:
#注册系统
user_0={}
names=[""]
while True:
username=input("用户名:")
if username in names:
print("用户名已存在请重新输入")
elif len(username)==0:
print("用户名不能为空请重新输入")
else:
key=input("密码:")
if len(key)==0:
print("密码不能为空请重新输入")
else:
surekey = input("再次确认密码:")
if key==surekey:
names.append(username)
user_0[f'{username}']=f'{key}'
#print(user_0)
break
else:
print("n 两次输入的密码不同请重新输入")
#登录系统
while True:
enterusername=input("用户名:")
if enterusername in names:
enterkey=input("密码:")
if enterkey==key:
print("登录成功")
break
else:
print("密码错误")
else:
print("账户名不存在")



