python - 返回返回无

时间:2018-05-04 12:27:50

标签: python python-3.x return

我编写了一个函数,它获取两个数字和一个操作(字符串),并使用给定的操作返回两个数字的结果。例如,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)

3 个答案:

答案 0 :(得分:2)

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

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

mathematical_sum中的回复并不会影响其被调用的功能。

答案 1 :(得分:0)

您需要return

当您从某个函数return时,它只会返回到调用它的函数。因此当您return中的mathematical_sum()时,会返回该值至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

答案 2 :(得分:0)

您的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)