【问题标题】:Python: My function will print continuous outputs but will not return them.Python:我的函数将打印连续输出但不会返回它们。
【发布时间】:2015-01-18 03:53:25
【问题描述】:

首先我想不出一个合适的标题。其次,我对编程很陌生。反正我有这个功能:

def addtrinumbs():
    x = 1
    list1 = []
    while x > 0:
        list1.append(x)
        x = x + 1
        y = sum(list1)
        print y

这将在 y 更改时连续打印。我想做的是这样的:

def addtrinumbs():
    x = 1
    list1 = []
    while x > 0:
        list1.append(x)
        x = x + 1
        y = sum(list1)
        return y

def addone(numbers):   
    x = numbers + 1   
    print x

addone(addtrinumbs())

所以我希望 addone() 不断地从 addtrinumbs() 获取输入。我觉得我缺少一个真正的基本和简单的概念。当我运行它时,我只得到 1 个输出,即 2。我已经阅读了有关生成器的信息,但我不确定这是否是我需要使用的。我想我了解它们的用途,但我找不到与我的问题相关的示例。任何帮助或朝着正确方向前进都会很好,谢谢。

【问题讨论】:

标签: python function continuous


【解决方案1】:

您似乎缺少生成器的概念——addtrinumbs 应该yield值而不是返回它们。 (它显然永远不会终止,但是,对于生成器,没关系)。

addone 将生成器作为参数并对其进行循环

for x in numbers:
    print(x+1)

这将发出无穷无尽的数字流——最好有一个退出条件somewhere——但是,这是使用的一般概念。

【讨论】:

    【解决方案2】:

    当一个函数返回一些东西时,该函数会自动中断并退出该函数。在this question 上查看更多信息。您有一个选择是首先将您想要返回的内容附加到列表中,然后返回该列表。

    【讨论】:

      【解决方案3】:

      当函数addtrinumbs查看第一个循环中的return语句时,它退出函数,返回相关值。这就是为什么它只返回一个值。 您需要将值存储在列表或其他内容中,然后返回列表。因此,使用list2 = [] 而不是return y,而是使用list2.append(y),然后最终返回列表return list2

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 2022-12-09
        • 2013-03-20
        相关资源
        最近更新 更多