我试图传递一个从一个函数创建的两个整数的列表,以便我可以在后续函数中操作它们。
def rollDie(number):
throw = []
for i in range(number):
roll = random.randint(1,6)
throw.append(roll)
return throw
所以我创建了另一个调用rollDie()结果的函数游戏():
def game(self,number):
if self.rollDie[0] != 1 or self.rollDie[1] != 1:
round_score = self.rollDie[0] + self.rollDie[2]
return round_score
但是当我调用函数游戏()时,它不会从rollDie()中拉出两个整数:
print(game(2))
它返回错误:
TypeError: game() missing 1 required positional argument: 'number'
我已经在stackoverflow中的其他地方研究过here,here,here。我希望有人可以提供帮助。非常感谢您的耐心等待。
答案 0 :(得分:2)
你定义函数的方式,你已经使它成为一个非静态引用,即它必须在一个对象上调用。
你必须在你定义的任何对象上调用游戏。例如,将您的类实例化为game1,然后调用game1.game(2)。
答案 1 :(得分:2)
正如@AAA指出的那样,你定义game()
的方式使它看起来像一个类函数(你可以阅读类here),但它看起来并不像你在任何地方定义了一个类。如果您已在其他地方定义了类,那么我们需要查看该代码。如果您不打算创建一个类,那么您需要取出self
个引用。
另外,我不确定self.rollDie[0]
应该如何工作。您是否尝试引用名为rollDie的类列表?如果是这样,我没有看到定义。如果您尝试拨打def rollDie(number):
功能,则需要执行此操作:self.rollDie()
。如果您想访问列表索引,最好使其等于self.roll_list = self.rollDie(1)
,然后您可以self.roll_list[0]
要记住的一件事是列表是可变对象,所以如果你打算在多个函数中使用你的列表并且你不打算创建一个类,那么单独启动它可能就不那么容易了,在函数之外,因为您可以从任何函数访问它。
答案 2 :(得分:0)
我做了类似的计划:
来自随机导入样本
result = [0,0,0,0,0,0] tosses = 10000
for i in range(tosses): 骰子=样本(范围(0,6),1) new = str(骰子).strip(' []') result [int(new)] + = 1
表示范围(0,6)中的i: 打印(i + 1,' ====>',结果[i])