列表索引超出范围(python)

Cha*_*zey 0 python indexing list range

我正在创建一个用于播放字谜的单词生成器,它适用于大约六个单词,然后说"列表索引超出范围".

这是我的代码:

def selection(word):
    while True:
        from random import randint
        sel = randint(1,10)
        print(word[sel])
        input("\nPress enter to select a new word.")

print("Type in ten words to add to the list.")
words = []
words.append(input("1st word: "))
words.append(input("2nd word: "))
words.append(input("3rd word: "))
words.append(input("4th word: "))
words.append(input("5th word: "))
words.append(input("6th word: "))
words.append(input("7th word: "))
words.append(input("8th word: "))
words.append(input("9th word: "))
words.append(input("10th word: "))
input("\nPress enter to randomly select a word.")
selection(words)
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 6

您目前正在1和之间选择一个数字10.Python列表是0 indexed,所以你应该在0和之间选择一个数字9.

sel = randint(0, 9)
Run Code Online (Sandbox Code Playgroud)

这也是使用该choice()功能的好地方.它从序列中挑选一个随机元素(例如列表).

random_word = random.choice(words)
Run Code Online (Sandbox Code Playgroud)

  • @CharlieKimzey,`random.choice`.请注意,您只需传递一个单词列表即可.你不需要告诉`choice`有多少单词. (2认同)