是什么导致消息"IndexError: list index out of range"?



我对python很满意,但我不明白为什么会出现这个错误,因为我的代码:

import random
inp = input('Enter: ')
inp = str(inp)
char = 0
key = []
list = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*?+-')
if inp == 'New':
while char < len(list):
rand = random.randint(0, len(list))
key.append(list[rand])
char = char + 1
print(key)

代码不会总是打印列表";键";而是给我一个错误";IndexError:列表索引超出范围;。我该如何解决这个问题?

randint具有包容性,因此它会将列表长度的实际值包含在随机值中,这可能会导致索引超出范围。例如,如果你有一个长度为8的列表,它可以给你值8,即使你的最大索引只能是7。

要修复,您只需要使用:

rand = random.randint(0, len(list) - 1)

编辑:

正如@DeepSpace提到的,您也可以使用random.choice(list)。并尽量避免使用内置的list作为变量名。

相关内容

最新更新