所有以前的ifs的Python 3其他

时间:2015-11-22 19:18:24

标签: python if-statement

说我有以下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

更改变量

有更好的方法吗?

2 个答案:

答案 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")

对于比这更复杂的事情,你必须以另一种方式跟踪这一点,涉及更多代码。