鱼C论坛

 找回密码
 立即注册
查看: 2959|回复: 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()
报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[name] = 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[name]:  # 【关键】
            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:\[00.Exerciese.2022]\Python>python x.py
欢迎来到鱼C论坛~
-------------------
1.注册
2.登录
3.退出
请输入指令:1
-------------------
请输入用户名:abc
请输入密码:xyz
恭喜,注册成功~

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

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

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[name] = 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 楼的代码已经重新修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 23:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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