鱼C论坛

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

[已解决]python第26讲当索引值不好用时课后题

[复制链接]
发表于 2022-5-10 13:23:17 | 显示全部楼层 |阅读模式

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

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

x
希望有人帮帮我,谢谢


程序实现效果需要得到如图所示
当我不封装成函数时
写的代码
account = {}
while 1:
    print("\n|--- 新建用户:N/n ---|")
    print("|--- 登录账号:E/e ---|")
    print("|--- 退出程序:Q/q ---|")
    temp = input("|--- 请输入指令代码:")

    if temp == 'N'or 'n':
        name = input("请输入用户名:")
        if name in account:
            name = input("此用户已经被使用,请重新输入:")
        secret = input("请输入密码:")
        account[name] = secret
        print("注册成功,赶紧试试登录吧")
    if temp == 'E'or 'e':
        name = input("请输入用户名:")
        if name in account:
            secret = input("请输入密码:")
            while 1:
                if secret == account[name]:
                    print("欢迎进入系统,请点击右上角x结束程序")
                    break
                else:
                    secret = input("密码错误,请重新输入:")

    if temp == 'Q'or 'q':
        break
print("感谢使用系统,祝您生活愉快")

但他的实现效果完全不是那样,你可以run一下上面代码就知道了,我不知道哪里错了,救命!!
最佳答案
2022-5-10 15:47:05
[b]
if temp == 'N'or 'n':
if temp == 'E'or 'e':
if temp == 'Q'or 'q':

if 条件判断不能这样写,因为 Python 会认为你是在判断 (temp == "..") or ( ".." )

而字符串只要不为 "" 空字符,即可以看成布尔类型的 True ,导致 if 条件会始终成立,将 if 改成这样即可:

if temp == 'N'or temp == 'n':
if temp == 'E'or temp == 'e':
if temp == 'Q'or temp == 'q':


参考代码:
account = {}
while 1:
    print("\n|--- 新建用户:N/n ---|")
    print("|--- 登录账号:E/e ---|")
    print("|--- 退出程序:Q/q ---|")
    temp = input("|--- 请输入指令代码:")

    if temp == 'N' or temp == 'n':
        name = input("请输入用户名:")
        if name in account:
            name = input("此用户已经被使用,请重新输入:")
        secret = input("请输入密码:")
        account[name] = secret
        print("注册成功,赶紧试试登录吧")
    if temp == 'E' or temp == 'e':
        name = input("请输入用户名:")
        if name in account:
            secret = input("请输入密码:")
            while 1:
                if secret == account[name]:
                    print("欢迎进入系统,请点击右上角x结束程序")
                    break
                else:
                    secret = input("密码错误,请重新输入:")

    if temp == 'Q' or temp == 'q':
        break
print("感谢使用系统,祝您生活愉快")
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-10 15:47:05 | 显示全部楼层    本楼为最佳答案   
[b]
if temp == 'N'or 'n':
if temp == 'E'or 'e':
if temp == 'Q'or 'q':

if 条件判断不能这样写,因为 Python 会认为你是在判断 (temp == "..") or ( ".." )

而字符串只要不为 "" 空字符,即可以看成布尔类型的 True ,导致 if 条件会始终成立,将 if 改成这样即可:

if temp == 'N'or temp == 'n':
if temp == 'E'or temp == 'e':
if temp == 'Q'or temp == 'q':


参考代码:
account = {}
while 1:
    print("\n|--- 新建用户:N/n ---|")
    print("|--- 登录账号:E/e ---|")
    print("|--- 退出程序:Q/q ---|")
    temp = input("|--- 请输入指令代码:")

    if temp == 'N' or temp == 'n':
        name = input("请输入用户名:")
        if name in account:
            name = input("此用户已经被使用,请重新输入:")
        secret = input("请输入密码:")
        account[name] = secret
        print("注册成功,赶紧试试登录吧")
    if temp == 'E' or temp == 'e':
        name = input("请输入用户名:")
        if name in account:
            secret = input("请输入密码:")
            while 1:
                if secret == account[name]:
                    print("欢迎进入系统,请点击右上角x结束程序")
                    break
                else:
                    secret = input("密码错误,请重新输入:")

    if temp == 'Q' or temp == 'q':
        break
print("感谢使用系统,祝您生活愉快")
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-10 15:50:10 | 显示全部楼层
account = {}
while 1:
    print("\n|--- 新建用户:N/n ---|")
    print("|--- 登录账号:E/e ---|")
    print("|--- 退出程序:Q/q ---|")
    temp = input("|--- 请输入指令代码:")

    if temp == 'N' or temp == 'n':
        name = input("请输入用户名:")
        if name in account:
            name = input("此用户已经被使用,请重新输入:")
        secret = input("请输入密码:")
        account[name] = secret
        print("注册成功,赶紧试试登录吧")
    if temp == 'E' or temp == 'e':
        name = input("请输入用户名:")
        if name in account:
            secret = input("请输入密码:")
            while 1:
                if secret == account[name]:
                    print("欢迎进入系统,请点击右上角x结束程序")
                    break
                else:
                    secret = input("密码错误,请重新输入:")

    if temp == 'Q' or temp == 'q':
        break
print("感谢使用系统,祝您生活愉快")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-10 17:36:49 | 显示全部楼层
if temp == 'N'or 'n' 这样写是有问题的,temp == 'N'or 'n'  相当于 (temp == 'N') or 'n',

而字符串只要不为空就是 True,也就是你那一句相当于 if (temp == 'N')or True,

所以就会恒为 True,你应该写 if temp == 'N' or temp == 'n'

也可以写成 if temp.lower() == 'n' 或者 if temp in ['N', 'n']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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