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

Python 3单词链(Word Chain)游戏实现遇IndexError报错求助

Fixing IndexError in Word Chain Game Code

我来帮你解决这个问题!你遇到的IndexError是因为当用户输入空行时,代码试图访问空字符串的索引(比如xx[0]),这自然会触发越界错误。另外原代码还有逻辑重复、未处理大小写不敏感的问题,我会一步步帮你修复。

错误原因分析

你的第9行while xx[0] != x[-1]:会在以下场景报错:

  • 当用户在纠正无效单词时输入空行,xx变成空字符串,此时xx[0]不存在
  • 后面的x[0] != xx[-1]也会出现同样的问题

此外原代码还存在:

  • 重复的输入检查逻辑,维护起来麻烦
  • 没有处理大小写不敏感的规则,比如Tomato和okra应该被判定为有效
  • 初始的循环结构不够清晰,容易出现逻辑漏洞

修复后的代码

# 初始化上一个有效单词,确保至少读取第一个单词
last_word = ""
while True:
    current_word = input('Word: ').strip()
    # 输入空行则结束游戏
    if not current_word:
        break
    # 处理第一个单词的情况,直接作为初始有效单词
    if not last_word:
        last_word = current_word.lower()
        continue
    # 检查当前单词是否符合规则(大小写不敏感)
    while current_word.lower()[0] != last_word[-1]:
        print('Invalid word')
        current_word = input('Word: ').strip()
        # 如果输入空行,直接退出循环
        if not current_word:
            break
    # 如果是空行,跳出外层循环结束游戏
    if not current_word:
        break
    # 更新上一个有效单词为当前单词的小写形式
    last_word = current_word.lower()

代码说明

  • 空输入处理:每次获取输入后先strip()去除首尾空格,然后检查是否为空,为空则直接结束游戏,彻底避免访问空字符串的索引
  • 大小写不敏感:把所有单词转换为小写(lower())后再比较,不管用户输入大写还是小写都能正确匹配规则
  • 简化逻辑:用一个last_word变量保存上一个有效单词,避免重复的代码块,逻辑更清晰易懂
  • 边界处理:第一个单词不需要检查,直接作为初始的last_word,后续每个单词都和last_word的最后一个字母比对

测试示例

比如你提供的示例1流程:

Word: tomato
Word: okra
Word: asparagus
Word: seaweed
Word: cake
Invalid word
Word: dried apricots
Word: cake
Invalid word
Word:

修复后的代码可以完美运行这个流程,遇到cake时因为首字母c和seaweed的最后字母d不匹配,输出Invalid word,直到输入空行结束游戏。

示例2的大小写场景也能正常兼容,比如输入Australia后,Antartic会被判定为有效(转小写后首字母a和australia的最后字母a匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:30:36