Ari小虎鱼 发表于 2022-5-10 12:10:42

模拟鱼C登录界面

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 = key
      print("恭喜,注册成功!")
      print("=====================")
   

def login():
    name = input("请输入用户名:")
    while name not in names:
      print("该用户名不存在。")
      name = input("请重新输入用户名:")
    else:
      key = input("请输入密码:")
      while encrypt(key) != names:
            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
恭喜,登录成功!
=====================
请问这是为什么

wp231957 发表于 2022-5-10 12:36:11

names   你这玩意到底保存的是用户名还是密码啊

Twilight6 发表于 2022-5-10 12:52:34


你的 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 = key
      print("恭喜,注册成功!")
      print("=====================")


def login():
    name = input("请输入用户名:")
    while name not in names:
      print("该用户名不存在。")
      name = input("请重新输入用户名:")
    else:
      key = input("请输入密码:")
      while encrypt(key) != names:
            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()

Ari小虎鱼 发表于 2022-5-10 13:09:02

wp231957 发表于 2022-5-10 12:36
names   你这玩意到底保存的是用户名还是密码啊

name是用户名啊

hy2009090003 发表于 2022-5-13 11:06:41

{:10_250:}
页: [1]
查看完整版本: 模拟鱼C登录界面