簡體   English   中英

為什么我的 function (f(x)=x*2) 沒有返回任何東西?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM