我邪魅一笑 发表于 2022-10-12 11:51:18

求帮改代码

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:
      print("密码错误!")
      passwd=input("请重新输入密码:")
    print("恭喜,登录成功~")

print("欢迎来到鱼C论坛~")
d={}
i=get_int()
while i!=3:
    if i==1:
      register()   
    if i==2:
      login()      
    i= get_int()
报错

jackz007 发表于 2022-10-12 12:42:34

本帖最后由 jackz007 于 2022-10-12 13:53 编辑

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("-------------------")
    while True:
      name = input("请输入用户名:") . strip()
      if name in d . keys():                        # 【关键】
            print("该用户名已被注册")
            print("请重新输入。\n")
      else:
            break
    passwd = input("请输入密码:") . strip()
    d = encrypt(passwd) . hexdigest()         # 【关键】
    print("恭喜,注册成功~\n")
   
def login():
    print("-------------------")
    while True:
      name = input("请输入用户名:") . strip()
      if name in d . keys():                        # 【关键】
            break
      else:
            print("该用户名不存在。")
            print("请重新输入用户名。\n")

    c , times = 0 , 3
    while c < times:
      passwd = input("请输入密码:") . strip()
      if encrypt(passwd) . hexdigest() == d:# 【关键】
            print("恭喜,登录成功~\n")
            break
      else:
            print("密码错误。\n")
      c += 1
    else:
      print("登录失败!\n")

print("欢迎来到鱼C论坛~")
d = {}
i = get_int()
while i!=3:
    if i==1:
      register()   
    if i==2:
      login()      
    i= get_int()
      运行实况:
D:\\Python>python x.py
欢迎来到鱼C论坛~
-------------------
1.注册
2.登录
3.退出
请输入指令:1
-------------------
请输入用户名:abc
请输入密码:xyz
恭喜,注册成功~

-------------------
1.注册
2.登录
3.退出
请输入指令:2
-------------------
请输入用户名:abc
请输入密码:xyz
恭喜,登录成功~

-------------------
1.注册
2.登录
3.退出
请输入指令:3

D:\\Python>

我邪魅一笑 发表于 2022-10-12 13:20:47

谢谢啦~我还想问一下,为什么小甲鱼给的代码没有用global不会报错。
import hashlib

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

    print("=====================")

    return ins


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


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

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

    fishc_db = passwd
    print("恭喜,注册成功~")


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

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

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


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

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

ins = get_ins()

while ins != '3':
    if ins == '1':
      register()
      
    if ins == '2':
      login()
      
    ins = get_ins()

jackz007 发表于 2022-10-12 13:48:31

本帖最后由 jackz007 于 2022-10-12 13:52 编辑

我邪魅一笑 发表于 2022-10-12 13:20
谢谢啦~我还想问一下,为什么小甲鱼给的代码没有用global不会报错。

      咱也可以去掉 global d
def register():
    print("-------------------")
    while True:
      name = input("请输入用户名:") . strip()
      if name in d . keys():   # 修改此句
. . . . . .
def login():
    print("-------------------")
    while True:
      name = input("请输入用户名:") . strip()
      if name in d . keys():   # 修改此句
      2 楼的代码已经重新修改
页: [1]
查看完整版本: 求帮改代码