You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Hangman游戏输入0退出时外层while循环无法终止问题求助

问题排查:Hangman游戏无法正常退出的原因及修复方案

嘿,我看了你的Hangman游戏代码,发现导致无法退出的问题其实很典型——输入类型不匹配,咱们一步步拆解:

核心问题:字符串 vs 整数的比较错误

你用inp=input("Input: ")获取用户输入时,input()函数返回的永远是字符串类型。比如用户输入0,变量inp的值是"0"(带引号的字符串),但你代码里写的是if inp==0:——拿字符串和整数0做比较,结果永远是False,所以break语句根本不会触发,外层while True循环就会一直跑下去。

两种简单的修复方案

方案一:把输入转为整数再判断

把获取输入的代码改成这样,先把用户输入转成整数,再和0比较:

print("Again?") #asked if wanna play again, 1=yes 0=no
print("1: Yes")
print("0: No")
try:
    inp = int(input("Input: "))
    if inp == 0:
        break
except ValueError:
    print("请输入有效的数字哦(1或0)")

加个try-except是为了防止用户输入非数字内容导致程序崩溃,让游戏更健壮。

方案二:直接和字符串"0"比较

如果你不想转类型,也可以直接判断输入的字符串是否等于"0"

print("Again?") #asked if wanna play again, 1=yes 0=no
print("1: Yes")
print("0: No")
inp = input("Input: ")
if inp == "0":
    break

关于你怀疑的缩进问题

看你提供的代码结构,缩进是没问题的——if inp==0:确实在游戏结束后的询问代码块里,和外层while True循环是同一层级,只要修复了上面的类型问题,break就能正常终止循环。

另外,还有个小细节:你代码里用到了random.randint(0,21),而你的wordsList刚好有22个元素(索引0到21),这个是完全没问题的,刚好能覆盖所有单词。

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

火山引擎 最新活动