Python:我的函数将打印连续输出,但不会返回它们。

时间:2015-01-18 03:53:25

标签: python function continuous

首先,我无法找到合适的标题。其次,我对编程很陌生。无论如何,我有这个功能:

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.我已阅读有关发电机的信息,我不确定这是否是我需要使用的。我想我明白了它们的用途,但我找不到与我的问题有关的例子。在正确的方向上任何帮助或转向都会很好,谢谢。

3 个答案:

答案 0 :(得分:1)

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

addone将生成器作为参数,循环将其作为参数:

for x in numbers:
    print(x+1)

这会发出无数的数字流 - 最好是退出条件某些 - 但是,它是使用的一般概念。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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