鱼C论坛

 找回密码
 立即注册
查看: 3371|回复: 3

求帮改代码

[复制链接]
发表于 2022-10-12 11:51:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import hashlib
def get_int():
    print("-------------------")
    print("1.注册")
    print("2.登录")
    print("3.退出")
    i=int(input("请输入指令:"))
    return i

def encrypt(x):
    bstr=bytes(x,"utf-8")
    x=hashlib.md5(bstr)
    return x
   
def register():
    print("-------------------")
    name=input("请输入用户名:")
    while name in d:
         print("该用户名已被注册")
         name=input("请输入用户名:")
    passwd=input("请输入密码:")
    d=dict.fromkeys(name,encrypt(passwd))
    print("恭喜,注册成功~")
   
def login():
    print("-------------------")
    name=input("请输入用户名:")
    while name not in d:
        print("该用户名不存在。")
        name=input("请重新输入用户名:")
    passwd=input("请输入密码:")
    while encrypt(passwd)!=d[name]:
        print("密码错误!")
        passwd=input("请重新输入密码:")
    print("恭喜,登录成功~")

print("欢迎来到鱼C论坛~")
d={}
i=get_int()
while i!=3:
    if i==1:
        register()   
    if i==2:
        login()      
    i= get_int()
报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-12 12:42:34 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-12 13:53 编辑
  1. import hashlib
  2. def get_int():
  3.     print("-------------------")
  4.     print("1.注册")
  5.     print("2.登录")
  6.     print("3.退出")
  7.     i=int(input("请输入指令:"))
  8.     return i

  9. def encrypt(x):
  10.     bstr=bytes(x,"utf-8")
  11.     x=hashlib.md5(bstr)
  12.     return x
  13.    
  14. def register():
  15.     print("-------------------")
  16.     while True:
  17.         name = input("请输入用户名:") . strip()
  18.         if name in d . keys():                        # 【关键】
  19.             print("该用户名已被注册")
  20.             print("请重新输入。\n")
  21.         else:
  22.             break
  23.     passwd = input("请输入密码:") . strip()
  24.     d[name] = encrypt(passwd) . hexdigest()           # 【关键】
  25.     print("恭喜,注册成功~\n")
  26.    
  27. def login():
  28.     print("-------------------")
  29.     while True:
  30.         name = input("请输入用户名:") . strip()
  31.         if name in d . keys():                        # 【关键】
  32.             break
  33.         else:
  34.             print("该用户名不存在。")
  35.             print("请重新输入用户名。\n")

  36.     c , times = 0 , 3
  37.     while c < times:
  38.         passwd = input("请输入密码:") . strip()
  39.         if encrypt(passwd) . hexdigest() == d[name]:  # 【关键】
  40.             print("恭喜,登录成功~\n")
  41.             break
  42.         else:
  43.             print("密码错误。\n")
  44.         c += 1
  45.     else:
  46.         print("登录失败!\n")

  47. print("欢迎来到鱼C论坛~")
  48. d = {}
  49. i = get_int()
  50. while i!=3:
  51.     if i==1:
  52.         register()   
  53.     if i==2:
  54.         login()      
  55.     i= get_int()
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 欢迎来到鱼C论坛~
  3. -------------------
  4. 1.注册
  5. 2.登录
  6. 3.退出
  7. 请输入指令:1
  8. -------------------
  9. 请输入用户名:abc
  10. 请输入密码:xyz
  11. 恭喜,注册成功~

  12. -------------------
  13. 1.注册
  14. 2.登录
  15. 3.退出
  16. 请输入指令:2
  17. -------------------
  18. 请输入用户名:abc
  19. 请输入密码:xyz
  20. 恭喜,登录成功~

  21. -------------------
  22. 1.注册
  23. 2.登录
  24. 3.退出
  25. 请输入指令:3

  26. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-12 13:20:47 | 显示全部楼层
谢谢啦~我还想问一下,为什么小甲鱼给的代码没有用global不会报错。
  1. import hashlib

  2. # 功能:获取用户指令
  3. # 返回:字符串,用户指令(1/2/3)
  4. def get_ins():
  5.     print("=====================")
  6.     print("1. 注册")
  7.     print("2. 登录")
  8.     print("3. 退出")
  9.    
  10.     ins = input("请输入指令:")
  11.     while not(ins == '1' or ins == '2' or ins == '3'):
  12.         ins = input("错误!请输入正确的指令:")

  13.     print("=====================")

  14.     return ins


  15. # 功能:MD5加密
  16. # 参数:字符串类型,未加密的明文
  17. # 返回:字符串类型,加密后的密文
  18. def encrypt(plaintext):
  19.     bstr = bytes(plaintext, "utf-8")
  20.     ciphertext = hashlib.md5(bstr).hexdigest()
  21.     return ciphertext


  22. # 功能:模拟论坛注册
  23. def register():
  24.     name = input("请输入用户名:")
  25.     while fishc_db.get(name):
  26.         print("该用户名已存在。")
  27.         name = input("请重新输入用户名:")

  28.     passwd = input("请输入密码:")
  29.     passwd = encrypt(passwd)

  30.     fishc_db[name] = passwd
  31.     print("恭喜,注册成功~")


  32. # 功能:模拟论坛登录
  33. def login():
  34.     name = input("请输入用户名:")
  35.     while not(fishc_db.get(name)):
  36.         print("该用户名不存在。")
  37.         name = input("请重新输入用户名:")

  38.     passwd = input("请输入密码:")
  39.     while fishc_db.get(name) != encrypt(passwd):
  40.         print("密码错误!")
  41.         passwd = input("请重新输入密码:")

  42.     print("恭喜,登录成功~")


  43. # 论坛原始数据库
  44. fishc_db = {}

  45. print("欢迎来到鱼C论坛~")

  46. ins = get_ins()

  47. while ins != '3':
  48.     if ins == '1':
  49.         register()
  50.         
  51.     if ins == '2':
  52.         login()
  53.         
  54.     ins = get_ins()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-12 13:48:31 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-12 13:52 编辑
我邪魅一笑 发表于 2022-10-12 13:20
谢谢啦~我还想问一下,为什么小甲鱼给的代码没有用global不会报错。


        咱也可以去掉 global d
  1. def register():
  2.     print("-------------------")
  3.     while True:
  4.         name = input("请输入用户名:") . strip()
  5.         if name in d . keys():     # 修改此句
  6. . . . . . .
  7. def login():
  8.     print("-------------------")
  9.     while True:
  10.         name = input("请输入用户名:") . strip()
  11.         if name in d . keys():     # 修改此句
复制代码

        2 楼的代码已经重新修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 04:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表