Spyder在使用正确数量的参数从另一个包/模块调用方法时抛出错误

时间:2017-05-20 20:03:33

标签: python spyder

目前我每次尝试运行时都会这样:

       start_1 = Random.randint(0, 25)

我明白了:

TypeError: randint() missing 1 required positional argument: 'b'

但是定义和代码完成只表明了两个参数。是的,我正在导入随机。

按要求提供整个代码:

# -*- coding: utf-8 -*-
"""
Created on Fri May 19 22:01:54 2017

@author: 
"""
from random import Random

Random.randint(0, 25)

3 个答案:

答案 0 :(得分:3)

资本Random

R - 因此您需要实例化它:

from random import Random           # Random with capital R is the class
random = Random()                   # Instantiate this class
random.randint(0, 25)               # Calling a method of the *object*

当然,你可以用

替换最后两行
Random().randint(0, 25)             # creating object of class Random just for this purpose

为什么...missing positional argument: 'b'使用(不正确)?

函数randint()在类Random中以标准方式定义为

def randint(self, a, b):

所以它需要3个参数 - 而且您只提供了2

(参数self是一个特殊的(隐藏的)参数 - 在正确使用的情况下,它将被调用对象本身自动替换。)

更舒适的可能性

import random
random.randint(0, 25)

from random import randint
randint(0, 25)

randint 模块中的random (巧妙地,为方便起见)定义为

randint = Random().randint          # Create temporary object and get its method

答案 1 :(得分:2)

您应该只导入random

import random

print(random.randint(1,20))

答案 2 :(得分:0)

这是整个程序,如果没有,你可以给我们整个程序吗?另外,尝试做:         start_1 = random.randint(randint(0,25))