鱼C论坛

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

[已解决]课后作业第26讲,设计用户登录程序

[复制链接]
发表于 2021-10-6 15:53:42 | 显示全部楼层 |阅读模式

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

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

x
这是我设计的代码
存在问题1:当用户已经存在时,重新输入后直接跳出循环了,为什么会这样呢
问题2: if code == 'E' or code == 'e':这行代码最初我用的时elif为什么会报错呢?
希望能有大神可以帮我纠错以及更改!谢谢!!!!






def enterway():
    ziliao = {}
    count = 1
    while count:
        print('''
--- 新建用户: N/n ---
--- 登录账号: E/e ---
--- 退出程序: Q/q ---''')
        code = input('---请输入指定代码: ')
        if code == 'N' or code == 'n':
            name = input('请输入用户名: ')
            if name in ziliao :
                name = input('用户名已经存在,请重新输入: ')
                continue
            
            secert = input('请输入密码: ')
            ziliao[name] = secert
            print('注册成功,赶紧试试登录把! ')
            
        continue
        if code == 'E' or code == 'e':
            name = input('请输入用户名: ')
            if name not in ziliao:
                name = input('用户名不存在,请重新输入: ')
               
                continue
            else :
                secert = input('请输入密码: ')
                if ziliao.get(name) == secert:
                    count -= 1
                    break
        print('欢迎进入培哥的世界,请在右上角点击X结束程序! ')
        
enterway()
最佳答案
2021-10-7 09:05:24
def main():
    users = {}
    count = 1
    while count:
        print('''--- 新建用户: N/n ---
--- 登录账号: E/e ---
--- 退出程序: Q/q ---''')
        code = input('* 请输入指定代码: ')
        if code in ['n', 'N']:
            name = input('* 请输入用户名: ')
            while name in users:
                name = input('用户名已经存在,请重新输入: ')
            pw = input('* 请输入密码: ')
            users[name] = pw
            print('注册成功,赶紧试试登录把! ')
        elif code in ['E', 'e']:
            if not users:
                print('目前用户列表为空,请先添加用户')
                continue
            name = input('* 请输入用户名: ')
            while name not in users:
                name = input('用户名不存在,请重新输入: ')
            pw = input('* 请输入密码: ')
            if users[name] == pw:
                count -= 1
                print('欢迎进入培哥的世界,请在右上角点击X结束程序! ')
        elif code in ['Q', 'q']:
            print('程序退出!')
            exit(0)


if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-7 09:05:24 | 显示全部楼层    本楼为最佳答案   
def main():
    users = {}
    count = 1
    while count:
        print('''--- 新建用户: N/n ---
--- 登录账号: E/e ---
--- 退出程序: Q/q ---''')
        code = input('* 请输入指定代码: ')
        if code in ['n', 'N']:
            name = input('* 请输入用户名: ')
            while name in users:
                name = input('用户名已经存在,请重新输入: ')
            pw = input('* 请输入密码: ')
            users[name] = pw
            print('注册成功,赶紧试试登录把! ')
        elif code in ['E', 'e']:
            if not users:
                print('目前用户列表为空,请先添加用户')
                continue
            name = input('* 请输入用户名: ')
            while name not in users:
                name = input('用户名不存在,请重新输入: ')
            pw = input('* 请输入密码: ')
            if users[name] == pw:
                count -= 1
                print('欢迎进入培哥的世界,请在右上角点击X结束程序! ')
        elif code in ['Q', 'q']:
            print('程序退出!')
            exit(0)


if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-7 09:53:50 | 显示全部楼层

def enterway():
    ziliao = {}
    count = 1
    while count:
        print('''
--- 新建用户: N/n ---
--- 登录账号: E/e ---
--- 退出程序: Q/q ---''')
        code = input('---请输入指定代码: ')
        if code == 'N' or code == 'n':
            name = input('请输入用户名: ')
            if name in ziliao :
                name = input('用户名已经存在,请重新输入: ')
                continue
            
            secert = input('请输入密码: ')
            ziliao[name] = secert
            print('注册成功,赶紧试试登录把! ')
            
        continue
       elif code == 'E' or code == 'e':
            name = input('请输入用户名: ')
            if name not in ziliao:
                name = input('用户名不存在,请重新输入: ')
               
                continue
            else :
                secert = input('请输入密码: ')
                if ziliao.get(name) == secert:
                    count -= 1
                    break
        print('欢迎进入培哥的世界,请在右上角点击X结束程序! ')
        
enterway()

我这里红色字体从if 改成elif为什么会报错呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-7 10:16:26 | 显示全部楼层

已经明白了!谢谢!又学到了新的东西!找到了自己的错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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