如果num1或num2不等于0



我是Python的初学者,我有一个问题:如果我有两个不同的数,如果其中一个等于0那么我应该返回非0的数的绝对值。我该怎么做呢?我知道如何使用abs(a或b)以及如何返回值,但我很难编写返回值不为0的算法。

希望有人能帮助我,将是伟大的:)

abs(a or b)已经完全完成了您想要的功能。基本上,a or b的行为(对于数字)与a if a != 0 else b相似。如果两者都是0,则返回None,则可以在其后面再加一个or None,即"绝对值为零时返回None"。

def f(a, b):
return abs(a or b) or None
print(f(0, -4), f(3, 0), f(4, -3), f(0, 0))
# 4 3 4 None

如果两个数字都是!= 0,这将只返回第一个值。如果您也想在这种情况下返回None,如果您想坚持使用andor,则可以使用稍微更神秘的None if a and b else abs(a or b) or Nonenot (a and b) and abs(a or b) or None

我想你正在寻找经典的嵌套测试。嵌套测试确保每个测试只发生一次(以防它可能很昂贵)。

def your_func(a,b):
if a == 0: # you could use: if not a
if b == 0:
return None
else:
return abs(b)
elif b == 0:
return abs(a)
else:
# the rest of your code

当两个数字都不为0时会发生什么?还是都是0?在这个例子中,我只返回0:

def func1(a,b):
#if both  number are zero
if a == b == 0:
return 0
elif a == 0:
return abs(b)
elif b == 0:
return abs(a)
#if both of the numbers are not zero
else:
return 0