如何让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
相关产品推荐
相关产品推荐

