Skip to main content
 首页 » 编程设计

python之在 Python 中产生随机错误时出错

2025年05月04日14cmt

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 个)是什么意思?我以为它只需要一个最小值和一个最大值?

请您参考如下方法:

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 个元组,这样才有意义。