Python random.choice()接受2个位置参数,但给出了3个

Python random.choice()接受2个位置参数,但给出了3个,python,python-3.x,random,Python,Python 3.x,Random,当我键入此项时: rand_num = random.choice(1, 101) 它表明: TypeError: choice() takes 2 positional arguments but 3 were given 这些都是放在函数中的,我不明白为什么它会这样说。我想你应该做: rand_num = random.choice(range(1,101)) 表示必须将一个序列传递给choice()(在本例中为一个范围)。我认为您需要执行以下操作: rand_num = random

当我键入此项时:

rand_num = random.choice(1, 101)
它表明:

TypeError: choice() takes 2 positional arguments but 3 were given

这些都是放在函数中的,我不明白为什么它会这样说。

我想你应该做:

rand_num = random.choice(range(1,101))

表示必须将一个序列传递给
choice()
(在本例中为一个范围)。

我认为您需要执行以下操作:

rand_num = random.choice(range(1,101))
表示必须将序列传递给
choice()
(在本例中为范围)。

的签名为:

向其传递一个序列,例如:

>>> random.choice([1, 2, 6, 8, 9])
2
范围
对象也有效,如这里的另一个答案所示

从逻辑上讲,您可能会问,为什么Python告诉您
choice()
接受两个位置参数,而不是一个(
seq
)?这是因为
choice()
是隐式的,因为它是一个实例方法。但出于函数调用方的意图和目的,您只需传递一个参数,即序列,如列表或元组。

的签名是:

向其传递一个序列,例如:

>>> random.choice([1, 2, 6, 8, 9])
2
范围
对象也有效,如这里的另一个答案所示


从逻辑上讲,您可能会问,为什么Python告诉您
choice()
接受两个位置参数,而不是一个(
seq
)?这是因为
choice()
是隐式的,因为它是一个实例方法。但是,出于作为函数调用方的意图和目的,我们希望您只传递一个参数,这是一个序列,例如列表或元组。

可能会有一个奇怪的错误,即当您只输入2时,给出了3个参数,但您可能不知道该方法实际上是一个对象的绑定方法

因此,当错误显示为
,但给出了3个
,它们包括您没有传入的
self
参数。下面是一个更清晰的错误场景演示:

obj = random.Random()
rand_num = random.Random.choice(obj, 1, 101)
输出:

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    random.Random.choice(obj, 1, 101)
TypeError: choice() takes 2 positional arguments but 3 were given
但更实用的方法是使用以下方法:


这可能看起来很奇怪,错误是当你只输入2时,给出了3个参数,但是你可能不知道这个方法实际上是一个对象的绑定方法

因此,当错误显示为
,但给出了3个
,它们包括您没有传入的
self
参数。下面是一个更清晰的错误场景演示:

obj = random.Random()
rand_num = random.Random.choice(obj, 1, 101)
输出:

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    random.Random.choice(obj, 1, 101)
TypeError: choice() takes 2 positional arguments but 3 were given
但更实用的方法是使用以下方法:


选择从给定的直接项中进行随机选择,如
[1,2,3,4,5….]

看看你需要什么:

  • 如果您从列表中随机选择了一些内容,则:
    rand_num=random.choice([1,2,3,…,101])


  • 如果您需要一个从1到101的随机数,这样一个选择从一个给定的直接中进行随机选择,例如
    [1,2,3,4,5….]

    看看你需要什么:

  • 如果您从列表中随机选择了一些内容,则:
    rand_num=random.choice([1,2,3,…,101])


  • 如果你需要一个从1到101的随机数,这样a看起来像你要找的,看起来像你要找的