请求排查Python代码报错问题:list index out of range
Python猜字母代码"list index out of range"错误修复
错误原因
你手动写死了判断条件user == letters[0] or ... or user == letters[7],但随机选择的单词长度不一致:
- "LONDON"长度为6,索引范围是0-5,访问
letters[6]或letters[7]就会触发索引越界错误 - "RESPECT"长度为7,索引0-6,访问
letters[7]也会报错 - 只有"ABSOLUTE"长度为8,能覆盖到索引7
另外你的count变量统计逻辑多余,直接用len(word)就能得到单词长度,因为所选单词里没有空格。
修正后的代码
import random user = input("Guess letter: ") word = random.choice(["LONDON", "RESPECT", "ABSOLUTE"]) letters = list(word) # 直接用in判断字母是否在单词里,简洁又不会越界 if user.upper() in letters: print("well done") else: print("nope") print(letters) print(" _ " * len(word))
优化说明
- 用
user.upper()统一转成大写,避免用户输入小写字母匹配失败的问题 - 用
in关键字直接判断字母是否在列表中,无需手动逐个索引判断,彻底解决索引越界问题 - 去掉多余的
count变量,直接用len(word)获取单词长度,简化代码
内容的提问来源于stack exchange,提问作者Maheer AB
相关产品推荐
相关产品推荐

