【问题标题】:Passing values through functions in Python在 Python 中通过函数传递值
【发布时间】:2015-11-22 02:35:34
【问题描述】:

我正在尝试传递从一个函数创建的两个整数的列表,以便我可以在后续函数中操作它们。

    def rollDie(number):
        throw = [] 
        for i in range(number):
            roll = random.randint(1,6)
            throw.append(roll)
        return throw

所以我创建了另一个调用 rollDie() 结果的函数 game():

    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

但是当我调用函数 game() 时,它不会从 rollDie() 中提取两个整数:

    print(game(2))

返回错误:

    TypeError: game() missing 1 required positional argument: 'number'

我研究了 hereherehere 以及 stackoverflow 中的其他地方。我希望有人可以提供帮助。非常感谢您的耐心等待。

【问题讨论】:

  • 你为什么给game一个self参数?是在课堂上吗?我认为您应该阅读 the Python tutorial 以了解 Python 中函数的基础知识。
  • 请注意,game() 使用的是self.rollDie[2]。你的意思可能是self.rollDie[1]

标签: python python-3.x


【解决方案1】:

按照您定义函数的方式,您已将其设为非静态引用,即必须在对象上调用它。

你必须在你定义的任何对象上调用游戏。例如,将您的类实例化为 game1,然后调用 game1.game(2)。

【讨论】:

    【解决方案2】:

    正如@AAA 指出的那样,您定义game() 的方式使其看起来像一个类函数(您可以阅读有关类here 的信息),但看起来您没有在任何地方定义一个类。如果您在其他地方定义了一个类,那么我们需要查看该代码。如果您不是要创建一个类,那么您需要取出 self 引用。

    另外,我不确定self.rollDie[0] 应该如何工作。您是否尝试引用名为 rollDie 的类列表?如果是这样,我认为没有定义。如果您尝试调用 def rollDie(number): 函数,那么您需要这样做:self.rollDie()。如果你想访问列表索引,最好让它等于:self.roll_list = self.rollDie(1),然后你可以通过self.roll_list[0]访问它

    要记住的一件事是列表是可变对象,因此如果您要在多个函数中使用列表并且您不打算创建一个类,那么单独启动它可能不会那么混乱,在函数之外,因为您可以从任何函数访问它。

    【讨论】:

    • 您对函数调用完全正确。 OP 编写的代码有很多问题。我建议他再看看 OOP 编程的原理。
    【解决方案3】:

    我做了一个类似的程序:

    骰子统计 14.11.2015

    随机导入样本

    结果 = [0, 0, 0, 0, 0, 0] 投掷 = 10000

    对于范围内的 i(投掷): 骰子 = 样本(范围(0, 6),1) 新 = str(骰子).strip('[]') 结果[int(new)] += 1

    对于范围内的 i (0, 6): print(i + 1, ' ====> ', 结果[i])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2018-04-28
      • 2016-12-20
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多