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