You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让if语句生成结果后执行内部代码?代码无语法报错却无法运行

解决你的Python if语句执行问题

Let's walk through what's causing your code to stall and fix it up properly:

主要问题分析

  • 错误使用is比较字符串
    在Python中,is用来判断两个对象的内存地址是否一致,而非字符串内容是否相等。哪怕用户输入了"yes",NewUserOrOldUser is "yes"也大概率返回False,直接导致第一个if块完全不执行。比较字符串内容必须用==。

  • 变量名拼写错误
    你写了VerfiyUn和VerfifyUnPw,正确的变量名应该是VerifyUn和VerifyUnPw——这种拼写错误会触发NameError,只是因为前面的if条件没触发,你暂时没看到这个报错。

  • 第二个条件应该用elif而非独立if
    现在你用了两个独立的if,但由于第一个条件的比较逻辑错误,两个条件都不满足,代码就直接结束了,所以你看不到后续操作。换成elif更符合二选一的逻辑场景。

  • 忽略了用户输入的大小写问题
    如果用户输入"Yes"或者"YES",你的条件也会不成立,最好把输入转成小写(或大写)来统一判断。

  • 文件处理的潜在隐患
    直接open("Un & Pw")既没处理文件路径问题(如果文件不在当前目录会找不到),也没关闭文件句柄。用with语句可以自动管理文件资源,更安全可靠。

修正后的代码

# 统一转成小写+去除前后空格,避免输入格式问题
NewUserOrOldUser = input("Have you played this game before? ").strip().lower()

if NewUserOrOldUser == "yes":
    VerifyUn = input("Please enter the username you chose: ")
    VerifyPw = input("Please enter the password you chose: ")
    # 修正拼写错误
    VerifyUnPw = VerifyUn + VerifyPw
    # 用with语句安全读取文件
    with open("Un & Pw", "r") as f:
        if VerifyUnPw in f.read():
            print("Proceed")
        else:
            print("The data you inputted was incorrect, please try again")
elif NewUserOrOldUser == "no":
    # 新增新用户注册逻辑,你可以根据需求调整
    new_un = input("Please create a username: ")
    new_pw = input("Please create a password: ")
    with open("Un & Pw", "a") as f:
        f.write(new_un + new_pw + "\n")  # 加换行符,避免账号信息混在一起
    print("Account created successfully!")
else:
    # 处理非yes/no的输入情况
    print("Please enter 'yes' or 'no' to continue.")

额外说明

  • 我给no的分支补充了新用户注册的逻辑,你可以根据自己的需求修改或扩展。
  • 给输入加.strip()是为了过滤用户输入前后的空格,避免比如输入" yes "这种情况导致条件不成立。

内容的提问来源于stack exchange,提问作者000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:38:48