【发布时间】:2016-12-08 01:52:59
【问题描述】:
我创建了一个有一个错误的刽子手游戏:如果您将同一个字母猜两次,它就会中断。我已经创建了每个字母的列表,当玩家猜测该字母时,它将从列表中删除,显示剩余的可供猜测的字符。这是通过 .remove 方法完成的,如果字符已经从先前的猜测中删除,该方法将中断。
我试图将此方法嵌套在一个 for 循环中,该循环将扫描字母列表并检查用户对列表中匹配项的猜测并将其删除。如果已经猜到了,那么什么都不会发生。我收到的错误是索引错误,大概是猜测的长度。我的困惑来自这样一个事实,即当我扫描刽子手词以匹配玩家的猜测时,我可以直接在下面完成完全相同的任务。请看下面的删减代码:
# Play begins and player guesses a letter
player_word = ['_ '] * len(cpu_word)
player_word2 = ['_'] * len(cpu_word)
alphabet = ['a','b',etc.]
print 'You have 10 guesses left'
# Determines if the guess is correct
for count in range(10)[::-1]:
guess = raw_input(str('Guess a letter: '))
# This is the previous method that creates a bug:/
# alphabet.remove(guess)
for e in xrange(len(alphabet)):
if alphabet[e] == guess:
alphabet.remove(guess)
for i in xrange(len(cpu_word)):
if cpu_word[i] == guess:
player_word [i] = cpu_word [i]
print 'Correct!'
我有两个问题。首先是有人可以向我解释这个错误,特别是为什么它适用于扫描刽子手词但不适用于扫描列表。
其次,任何人都可以为这个问题提供解决方案。
我是编码新手,因此非常感谢任何信息!
谢谢
【问题讨论】:
标签: python indexoutofboundsexception