For 循环中的“列表索引超出范围”错误,我尝试通过 len() 定义长度并附加

斯鲁扬

我是 Python 的初学者,我想制作一个 Hangman 游戏来掌握这门语言。

print('You have 5 turns to guess the word.')
turn = int(5)
word = str('secret')
i = int(0)
time.sleep(1)
for i in range(len(word)):
    print('_', end='')
    time.sleep(0.3)
print()
time.sleep(1)
current = list()
while turn != 0:
    if turn > 1:
        print('You have', turn, 'guesses.')
    else:
        print('You have', turn, 'guess.')
    guess = input('Enter your guess.')
    for i in range(len(word)):
        if guess == word[i]:
            print(guess, end='')
            current[i] = guess
        else:
            print('_', end='')
            current[i] = '_'
    print(current)
    turn -= 1

在上面的代码中,我在 for 循环中收到“列表索引超出范围”错误。我认为问题是列表长度在开始时没有定义。所以,我添加了这个:

len(current) = len(word)

但是,这没有帮助。然后我尝试在第一回合追加:

        if j == 0:
            if guess == word[i]:
                print(guess, end='')
                current.append(guess)
            else:
                print('_', end='')
                current.append('_')
            j=1
        else:
            if guess != word[i]:
                print(current[i], end='')
            elif current[i] != '_':
                print(guess, end='')
                current[i] = word[i]
            else:
                print(guess, end='')
                current[i] = '_'

即使这不起作用,现在我迷路了。

阿兹罗

您可能未定义current为空列表,因为您无法在特定索引处分配某些字母,因为它们不存在,请执行

current = ['_'] * len(word)

那么你if/else是错的,因为它只分配current了你刚刚给出的字母,所以你不断地把_之前找到的三个字母放回去

您可能只有一个if好字母,要更改下划线,只需currentfor循环打印,不需要执行两次(在循环内)

current = ['_'] * len(word)
while turn != 0:
    if turn > 1:
        print('You have', turn, 'guesses left.')
    else:
        print('You have', turn, 'guess left.')
    guess = input('Enter your guess: ')
    for i in range(len(word)):
        if guess == word[i]:
            current[i] = guess
    print("".join(current))
    turn -= 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bs4:尝试在不同长度的不同数组中循环。获取索引错误:列表索引超出范围

当我尝试重新定义变量时,出现索引超出范围错误

如何将特定范围定义为“ sum(x,len)”的长度?

索引错误:在“for i in range(len(x)):”中列出超出范围的索引

IndexError:字符串索引超出范围-使用len()

当我所做的只是遍历列表的长度时,为什么会出现索引超出范围错误?

比较2个元素并遍历len(List)-1时使列表索引超出范围

IndexError:列表索引超出范围,即使我没有引用大于列表长度的值?

当我尝试启动 minikube 时,我收到错误消息“运行时错误:索引超出范围 [0],长度为 0”

附加到列表的问题-IndexError:列表索引超出范围

列表索引超出范围-但是我在处理之前正在检查长度

尝试使用“ len”功能查找列表长度时出现语法错误

为什么key_len大于索引长度?

for 循环遍历索引 len?

字符串索引超出范围(长度错误不同)

For循环错误:列表索引超出范围

更改列表的 len

在Python的for循环中使用range(len(x))时添加索引有什么作用?例如范围(len(x [0])

在Python的while循环中追加列表会出现错误消息“列表索引超出范围”

len方法未定义

在简单的 python for 循环中列出索引超出范围错误

如何在不使用len()的情况下在python中查找列表的长度

迭代列表(长度 n)以包含集合 X 的每个可能的变化,其中 n 大于 len(unique(X))

错误 此行的长度为 182。最大允许为 100 max-len

len函数显示的单词长度错误(没有空格等)是有原因的吗?

在 CSV 文件中附加数据时列表索引超出范围

紧急情况:运行时错误:索引超出范围[0],长度为0

当数组的长度不为null时,请执行“ panic:运行时错误:索引超出范围”

致命错误:附加数组时数组索引超出范围