[英]Why my function (f(x)=x*2) doesn't returns anything?
我知道有一些更簡單的方法可以計算一個數字的平方並將其存儲在一個數組中,但是為了另一個問題。 我需要了解為什么這段代碼及其結構中什么也沒有發生(return(a) 是否必要?):
s=[1,2,3,4,5]
def square(x):
return x*x
def iterate(b):
sol=[]
for b in s:
a=square(b)
return(a)
sol.append(a)
print(sol)
目標是將正方形存儲在 sol 中:sol = [1,4,9,16,25]。 但是代碼運行時不打印任何內容。 是什么讓下面的代碼工作而不是前一個?
s=[1,2,3,4,5]
def square(x):
return x*x
sol=[]
for b in s:
a=square(b)
sol.append(a)
print(sol)
(我的問題涉及曲線擬合,這種結構不符合我的需要)
問題是您在square
內定義了iterate
,但您從不調用iterate
。 最好讓iterate
成為一個單獨的 function 調用square
:
values = [1,2,3,4,5] # do not call your variable set - it is a Python keyword
def square(x):
return x*x
def iterate(values):
solution = []
for value in values:
value_squared = square(value)
solution.append(value_squared)
return solution
您也可以在不使用列表推導定義iterate
的情況下執行此操作:
[square(value) for value in values]
編輯:
要回答您的其他問題,這是您的代碼:
s=[1,2,3,4,5]
def square(x):
return x*x
def iterate(b):
sol=[]
for b in s:
a=square(b)
return(a)
sol.append(a)
print(sol)
在square
中,您永遠不會調用iterate
,因此這部分代碼永遠不會運行。
如果在square
中添加對iterate
的調用,您將陷入無限循環。 這是因為在iterate
中你調用square
,但你總是迭代你的 list s
這意味着在iterate
內部, square(b)
將始終是square(1)
。
在iterate
中,您使用全局變量s
但最好重組代碼以便將s
作為輸入。
如果您正在學習內部函數,您可以定義iterate
並在此定義square
中:
values = [1,2,3,4,5]
def iterate(values):
def _square(x):
return x*x
solution = []
for value in values:
value_squared = _square(value)
solution.append(value_squared)
return solution
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.