说我有以下Python 3代码:
def foo(number_a, number_b):
if number_a >= 0:
print("a is Positive")
if number_b <= 100:
print("b is <= 100")
else:
print("a is negative and b > 100")
当且仅当两个条件均为假时,如何才能else
开火?
我可以这样做:
doElse = True
if condition1:
doElse = False
# do something
if condition2:
doElse = False
# do something
# condition3...conditionN
if doElse:
# do the else
但是这需要设置变量,然后为每个if
有更好的方法吗?
答案 0 :(得分:0)
你可以像这样重新排序if语句:
def foo(number_a, number_b):
if number_a < 0 and number_b > 100:
print("a is negative and b > 100")
elif number_a >= 0:
print("a is Positive")
else:
print("b is <= 100")
答案 1 :(得分:0)
只要你的第一个和第二个条件是互斥的,你应该总是用一个if / elif / else结构解决这个问题。使用您的原始示例:
if word == "banana":
print("word is banana")
elif word == "apple":
print("word is not banana, but it is apple")
else:
print("word is neither banana, nor apple, but something else")
如果您的条件不是互斥的,那么这显然不起作用,因为您还想继续检查其他条件。
在这种情况下,您应该尝试为所有这些找到共同条件。这可以像将条件与或组合一样简单:
if number >= 0 or number <= 100:
if number >= 0:
print("Positive")
if number <= 100:
print("<= 100")
else:
print("x < 0 or x > 100")
但如果可能的话,你也可以将它们结合起来:
if 0 <= number <= 100:
…
或者您可以用倒置条件替换else
:
if number >= 0:
print("Positive")
if number <= 100:
print("<= 100")
if number < 0 or number > 100:
print("x < 0 or x > 100")
对于比这更复杂的事情,你必须以另一种方式跟踪这一点,涉及更多代码。