在Python中进行随机错误时出错

时间:2012-02-26 18:00:15

标签: python variables random

import random
import time
loop = [1,2,3,4,5,6,7,8,9,10]
queenstrength = 100
queendamagenum = 1,20
print "The queens health is currently: ",queenstrength

while queenstrength > 0:
    queendamage = random.randint((queendamagenum))
    print""
    print "queen damage:", queendamage
    queenstrength = queenstrength - queendamage
    print queenstrength
    time.sleep(1)

print""
print"finished"

我正在尝试在我正在制作的游戏中使用此代码,但我不断收到错误:

**Traceback (most recent call last):
  File "Untitled.py", line 9, in <module>
    queendamage = random.randint((queendamagenum))
TypeError: randint() takes exactly 3 arguments (2 given)**

这是什么意思3个参数(给出2个)?我认为它只需要一分钟和一个最大值?

1 个答案:

答案 0 :(得分:8)

randint接受最小值和最大值,如下所示:

>>> import random
>>> random.randint(0,10)
1

但是你传递了一个元组:

>>> random.randint((0, 10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: randint() takes exactly 3 arguments (2 given)

如果您愿意,可以使用argument unpacking ( *运算符)将您的元组转换为randint的一系列参数:

>>> queendamagenum = 1, 20
>>> random.randint(*queendamagenum)
8

至于错误消息显示“3个参数(2个给定)”的事实,那是因为randint实际上是一个生成random.Random实例的方法,而不是函数。方法自动获取传递给它们的参数(传统上称为“self”),这是实例本身。所以你应该将“3个参数(2个参数)”翻译成“2个非自我参数(1个给定)”,你只传递1个元组,这样才有意义。