求帮改代码
import hashlibdef 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 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> 谢谢啦~我还想问一下,为什么小甲鱼给的代码没有用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: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]