Python计算器,返回statemt

Python计算器,返回statemt,python,Python,我一直在尝试用python制作一个基本的计算器来学习它。我有一个很好的开始,但我不知道为什么这个递归函数不返回值 def Difference(x=int, y=int, z=bool): if y != 0: if z: if int(y) > 0: y -= 1 x -= 1 Difference(x, y, True) elif int(y) < 0:

我一直在尝试用python制作一个基本的计算器来学习它。我有一个很好的开始,但我不知道为什么这个递归函数不返回值

def Difference(x=int, y=int, z=bool):
if y != 0:
    if z:
        if int(y) > 0:
            y -= 1
            x -= 1
            Difference(x, y, True)
        elif int(y) < 0:
            y += 1
            x += 1
            Difference(x, y, True)

    if not z:
        if int(y) > 0:
            y -= 1
            x += 1
            Difference(x, y, False)
        elif int(y) < 0:
            y += 1
            x -= 1
            Difference(x, y, False)
else:
    return int(x)

D = Difference(15,2,True)
def差(x=int,y=int,z=bool):
如果y!=0:
如果z:
如果int(y)>0:
y-=1
x-=1
差异(x,y,真)
elif int(y)<0:
y+=1
x+=1
差异(x,y,真)
如果不是z:
如果int(y)>0:
y-=1
x+=1
差异(x,y,False)
elif int(y)<0:
y+=1
x-=1
差异(x,y,False)
其他:
返回整数(x)
D=差值(15,2,真)
如果有人能帮助解决可能出现的问题,我们将不胜感激。谢谢

只需在函数定义中的每个递归调用“差分(x,y,z)”之前添加“return”,因为它应该返回一些东西


在python中,如果不传播/使用函数调用的返回语句,它将被吞没在调用它的范围内。由于您的代码是用于递归的,您应该将子递归循环的返回传播到父递归循环,否则它将被丢弃,执行将继续不返回任何返回语句。

缺少返回语句您在else中只有一个return语句,您还需要它在上面这并不像您认为的那样:
def Difference(x=int,y=int,z=bool):
。如果你想做类型注释,就像我想的那样,你需要冒号,而不是等号<代码>定义差异(x:int,y:int,z:bool):