random.randint() 调用 -1?

有人可以解释为什么rangeinrandom.randint(0, len(messages) - 1)的末尾有负 1 吗?该列表有 9 个值:


import random


messages = ['It is certain',

            'It is decidedly so',

            'Yes definitely',

            'Reply hazy try again',

            'Ask again later',

            'Concentrate and ask again',

            'My reply is no',

            'Outlook not so good',

            'Very doubtful']


select_number = random.randint(0, len(messages) - 1)

list_select  = messages[select_number]

print(list_select)


守着星空守着你
浏览 261回答 3
3回答

BIG阳

random.randint()的第二个值是包容性的。它将从10 个随机整数(0、1、2、3、4、5、6、和)中选择一个数字7,其中列表中只有 9 个索引。是,但没有索引,因为 Python 索引从. 相反,唯一有效的索引从到。89len(messages)9messages[9]008因此,通过使用random.randint(0, len(messages) - 1),该功能仅限于为messages列表选择有效索引。代码应该改为使用random.choice(),它从列表中选择一个随机元素:list_select = random.choice(messages)在其他情况下,random.randrange()也可能是一个选项,因为它不包括可能值中的端点,类似于 Python 索引、切片和range():index_select = random.randrange(len(messages))

慕村9548890

random.randint(a, b)&nbsp;返回一个随机整数 N,使得 a <= N <= b。len(messages) - 1有点棘手,因为您的列表范围确实是 9,但是您必须记住计数是从 0 而不是 1 开始的。所以在您的情况下len(messages)将返回 9 但第一个元素在messages[0]这意味着在您的情况下,select_number = random.randint(0, len(messages) - 1)将给出从 0 到len(messages) - 19 - 1 的数字。

红颜莎娜

这是因为random.randint随机选择列表的索引,从 0 到 8,并选择一条消息。现在,列表的索引从0到len(messages)-1=8。根据文档:https ://docs.python.org/3/library/random.html#random.randint随机.randint(a, b) 。返回一个随机整数 N,使得 a <= N <= b。randrange(a, b+1) 的别名。这意味着选择 0 到 8 之间的整数,这是列表的有效索引,如果我们改为 put&nbsp;len(messages),索引 9 也会被选择,这对于 Python 中的列表来说是无效的索引,因为 Python 列表是0-indexed
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python