Python猜词游戏bug:任意输入均触发‘找到秘密词’提示
秘密单词猜词游戏代码修正
你编写的猜词游戏存在几个关键问题,导致无论输入什么都会触发"找到秘密词"的逻辑:
- 变量名错误:打开文件时赋值给了
secret1,但读取时用了未定义的keywordlist,运行时会抛出NameError。 - 错误使用赋值运算符:条件判断里用了
:=(赋值)而非==(比较)。if gid:=1是把1赋值给gid,这个表达式永远为真;if guess := list1[0]同理,直接将秘密词赋值给guess,导致该分支必然执行。 - 未处理换行符:
readlines()会保留每行末尾的\n,输入的内容和列表中的字符串会因为换行符不匹配,导致判断失效。 - 提示词判断不完整:只判断了第二个元素(
list1[1]),没有覆盖其他7个提示词。
修正后的代码
# 读取文件并处理换行符 with open("keywordlist.txt", "r") as f: list1 = [line.strip() for line in f.readlines()] gid = input("enter the game id: ") # 用==做比较判断 if gid == "1": print("category is", list1[8]) guess = input("guess the secret: ") # 比较输入和秘密词 if guess == list1[0]: print("找到秘密词:", list1[0]) # 判断是否是提示词(列表第2到第9个元素) elif guess in list1[1:]: print("找到提示词:", guess) else: print("输入的内容既不是秘密词也不是提示词")
修正说明
- 用
with语句打开文件,自动处理文件关闭,避免资源泄漏。 - 用列表推导式遍历每行,通过
strip()去掉换行符和首尾空格,确保字符串匹配准确。 - 所有条件判断都用
==进行值比较,而非赋值操作。 - 用
guess in list1[1:]一次性判断输入是否属于任意提示词,覆盖所有非秘密词的行。 - 添加默认分支,处理既不是秘密词也不是提示词的输入。
内容的提问来源于stack exchange,提问作者ermanto
相关产品推荐
相关产品推荐

