我是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
,如果您想坚持使用and
和or
,则可以使用稍微更神秘的None if a and b else abs(a or b) or None
或not (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