簡體   English   中英

python - 返回返回無

[英]python - return returns None

我編寫了一個函數,它獲取兩個數字和一個操作(字符串),並使用給定的操作返回兩個數字的結果。 例如,calculate_matehamatical_expression(5,6,'+') 應該返回 11。我將分配分配給小函數,但是當我調用這些小函數時,它總是返回 None。 有人可以向我解釋為什么會這樣嗎? 這是我寫的代碼:

def mathematical_sum(num1,num2):
    return num1 + num2

def mathematical_difference(num1,num2):
    return num1 - num2

def mathematical_product(num1,num2):
    return num1 * num2

def mathematical_division(num1,num2):
    if num2 != 0:
        return num1 / num2
    else:
        return None

def operation_error(operation):
    if operation != "+" or operation != "-" or operation != "*" or operation != "/":
        return None




def calculate_mathematical_expression(num1,num2,operation):
    if operation == "+":
        mathematical_sum(num1,num2)
    elif operation == "-":
        mathematical_difference(num1,num2)
    elif operation == "*":
        mathematical_product(num1,num2)
    elif operation == "/":
        mathematical_division(num1,num2)
    else:
        operation_error(operation)

您需要在calculate_mathematical_expression再次返回,例如:

def calculate_mathematical_expression(num1,num2,operation):
    if operation == "+":
        return mathematical_sum(num1,num2)

在返回mathematical_sum並不影響它被從調用的函數。

你需要return

當您return從功能,它只返回到調用它的功能。 因此,當您在mathematical_sum() return時,該值將返回到calculate_mathematical_expression()您需要從該函數中再次返回,如下所示:

if operation == "+":
    return mathematical_sum(num1,num2)
elif operation == "-":
    return mathematical_difference(num1,num2)
elif operation == "*":
    return mathematical_product(num1,num2)
elif operation == "/":
    return mathematical_division(num1,num2)
else:
    return operation_error(operation)

...否則calculate_mathematical_expression()返回None


operation_error()不起作用

  • 使用and代替or 否則您的條件將始終為True
  • 返回一個布爾值,而不是None 在這里,你的函數總是返回None

例子:

def operation_error(operation):
    return operation != "+" and operation != "-" and operation != "*" and operation != "/"

你不需要operation_error()

由於您對每個運算符都有一個條件,因此您不需要operation_error()函數,您可以直接執行此操作:

else:
    return None

...或者甚至刪除else語句並讓calculate_mathematical_expression()在到達結束時自動返回None

您的 calculate_mathematical_expression 函數沒有返回任何內容。 嘗試以下代碼:

def calculate_mathematical_expression(num1,num2,operation):
    if operation == "+":
        return mathematical_sum(num1,num2)
    elif operation == "-":
        return mathematical_difference(num1,num2)
    elif operation == "*":
        return mathematical_product(num1,num2)
    elif operation == "/":
        return mathematical_division(num1,num2)
    else:
        return operation_error(operation)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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