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

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("输入的内容既不是秘密词也不是提示词")

修正说明

  1. 用with语句打开文件,自动处理文件关闭,避免资源泄漏。
  2. 用列表推导式遍历每行,通过strip()去掉换行符和首尾空格,确保字符串匹配准确。
  3. 所有条件判断都用==进行值比较,而非赋值操作。
  4. 用guess in list1[1:]一次性判断输入是否属于任意提示词,覆盖所有非秘密词的行。
  5. 添加默认分支,处理既不是秘密词也不是提示词的输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:55:25