我知道有更簡單的方法來計算數字的平方并將其存盤在陣列中,但為了另一個問題。我需要了解為什么此代碼及其結構中沒有任何反應(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)
(我的問題涉及曲線擬合,這個結構不符合我的需要)
uj5u.com熱心網友回復:
問題是你iterate在內部定義square但你從不呼叫iterate. 最好有iterate一個單獨的函式來呼叫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因此這部分代碼永遠不會運行。
如果添加了呼叫iterate中square,你會在一個無限回圈結束。這是因為在iterate您內部呼叫square,但您總是遍歷您的串列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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/380731.html
上一篇:無法將日期時間從字串轉換為另一種格式(例如:14/12/202103:34:03PM到03:34pm)
下一篇:for回圈內的awk問題
