Python 为什么列表索引只有部分时间超出范围?蟒蛇3

Python 为什么列表索引只有部分时间超出范围?蟒蛇3,python,python-3.x,Python,Python 3.x,有时,它不会返回问题编号,而是给出一个错误,表示列表索引超出了函数的范围 我显然误解了我所写的内容,因为我的理解是,这不可能超出范围,因为随机的范围是基于列表的长度。不管列表的大小如何,随机数应该能够解释它。非常感谢您的帮助。多谢各位 import random def choose(): game_list = [1, 2, 3, 4, 5] question_number = game_list[random.randint(0, len(game_list))]

有时,它不会返回问题编号,而是给出一个错误,表示列表索引超出了函数的范围

我显然误解了我所写的内容,因为我的理解是,这不可能超出范围,因为随机的范围是基于列表的长度。不管列表的大小如何,随机数应该能够解释它。非常感谢您的帮助。多谢各位

import random


def choose():
    game_list = [1, 2, 3, 4, 5]
    question_number = game_list[random.randint(0, len(game_list))]
    print(len(game_list))  # test
    game_list.remove(question_number)
    print(game_list)  # test
    return question_number


print(choose())
如果查看for
randint
,您将看到第二个参数是包含的

random.randint(a, b)
Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
该数字可能等于len(游戏列表),这将导致索引错误


一个简单的解决方法是将第二个参数更改为
len(game_list)-1

random。randint
包含端点,这意味着它可以返回
len(game_list)
,即
5
,这是一个索引错误。您需要类似于
len(游戏列表)-1的内容。另请参见:
random.randint(0, len(game_list))