马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python第41讲课后作业
我的代码:import hashlib
names = {}
#定义函数
def get_int():
print("1. 注册\n2. 登录\n3. 退出")
get = input("请输入指令:")
while not (get == '1' or get == '2' or get == '3'):
get = input("错误。请输入正确的指令:")
else:
print("=====================")
return get
def register():
name = input("请输入用户名:")
while name in names:
print("该用户名已存在!")
name = input("请重新输入用户名:")
else:
key = input("请输入密码:")
key = encrypt(key)
names[name] = key
print("恭喜,注册成功!")
print("=====================")
def login():
name = input("请输入用户名:")
while name not in names:
print("该用户名不存在。")
name = input("请重新输入用户名:")
else:
key = input("请输入密码:")
while encrypt(key) != names[name]:
print("密码错误!")
key = input("请重新输入密码:")
print("恭喜,登录成功!")
print("=====================")
def encrypt(key):
key = hashlib.md5(bytes(key,"utf-8"))
#运行
print("欢迎来到鱼C论坛~\n=====================")
get = get_int()
while get != '3':
if get == '1':
register()
get = get_int()
elif get == '2':
login()
get = get_int()
其他都正常,但是login密码识别好像有问题=====================
请输入用户名:xhy
请输入密码:20080327
恭喜,注册成功!
=====================
1. 注册
2. 登录
3. 退出
请输入指令:2
=====================
请输入用户名:xhy
请输入密码:2222222222222222222
恭喜,登录成功!
=====================
请问这是为什么
你的 encrypt 函数忘记设置返回值了
而且你需要调用 hexdigest() 方法才能得到 md5 码的十六进制项,否则比较的是对象内存地址,肯定会不一致的
改动后的 encrypt 函数:
def encrypt(key):
key = hashlib.md5(bytes(key, "utf-8")).hexdigest()
return key
完整参考代码:
import hashlib
names = {}
# 定义函数
def get_int():
print("1. 注册\n2. 登录\n3. 退出")
get = input("请输入指令:")
while not (get == '1' or get == '2' or get == '3'):
get = input("错误。请输入正确的指令:")
else:
print("=====================")
return get
def register():
name = input("请输入用户名:")
while name in names:
print("该用户名已存在!")
name = input("请重新输入用户名:")
else:
key = input("请输入密码:")
key = encrypt(key)
names[name] = key
print("恭喜,注册成功!")
print("=====================")
def login():
name = input("请输入用户名:")
while name not in names:
print("该用户名不存在。")
name = input("请重新输入用户名:")
else:
key = input("请输入密码:")
while encrypt(key) != names[name]:
print("密码错误!")
key = input("请重新输入密码:")
print("恭喜,登录成功!")
print("=====================")
def encrypt(key): # -------------------------------------- 改了这个函数
key = hashlib.md5(bytes(key, "utf-8")).hexdigest()
return key
# 运行
print("欢迎来到鱼C论坛~\n=====================")
get = get_int()
while get != '3':
if get == '1':
register()
get = get_int()
elif get == '2':
login()
get = get_int()
|