[英]Python: My function will print continuous outputs but will not return them.
首先,我無法為此找到合適的標題。 其次,我是編程新手。 無論如何,我有這個功能:
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。我已經閱讀了有關生成器的信息,但是我不確定這是否是我需要使用的輸出。 我想我了解它們的用途,但是找不到與我的問題有關的示例。 謝謝您的幫助或朝正確方向的指導。
您似乎缺少了生成器的概念addtrinumbs
應該產生值而不是返回值。 (顯然它將永遠不會終止,但是對於生成器來說 ,這是可以的)。
addone
將生成器作為參數並在其上循環 :
for x in numbers:
print(x+1)
這將發出無休止的數字流-最好在某些地方存在退出條件-但這是使用的一般概念。
當函數返回某些內容時,該函數將自動中斷並退出該函數。 有關此問題的更多信息,請參見。 您必須選擇的一種方法是,首先將要返回的內容附加到列表中,然后返回該列表。
當函數addtrinumbs
在第一個循環中查看return語句時,它將退出該函數,並返回相關值。 這就是為什么它僅返回一個值的原因。 您需要將值存儲在列表或其他內容中,然后返回列表。 因此,采用list2 = []
,而不是return y
,而是執行list2.append(y)
,然后最終返回列表, return list2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.