Python第二个“if语句”否定了第一个

时间:2017-02-22 17:24:49

标签: python if-statement

如果我有两个if语句后跟一个else,那么第一个语句基本上被忽略了:

x = 3
if x == 3:
    test = 'True'
if x == 5:
    test = 'False'
else:
    test = 'Inconclusive'

print(test) 

返回:

Inconclusive

在我看来,由于第一个if语句为True,因此结果应为“True”。为了使其发生,必须将第二个if语句更改为“elif”。有谁知道为什么?

2 个答案:

答案 0 :(得分:5)

您应该使用if-elif-else语句。目前,您的代码正在执行

x = 3
if x == 3: # This will be True, so test = "True"
    test = 'True'
if x == 5: # This will be also tested because it is a new if statement. It will return False, so it will enter else statement where sets test = "Inconclusive"
    test = 'False'
else:
    test = 'Inconclusive'

改为使用:

x = 3
if x == 3: # Will be true, so test = "True"
    test = 'True'
elif x == 5: # As first if was already True, this won't run, neither will else statement
    test = 'False'
else:
    test = 'Inconclusive'

print(test)

答案 1 :(得分:4)

您有两个独立 if语句。第二个这样的陈述有else套件并不重要;根据第二次else测试所附的条件挑选if套件;在第一个if声明中发生的任何事情无关紧要

如果您希望的两个x测试是独立的,请使用一个 if语句并使用elif套件进行第二次测试:

if x == 3:
    test = 'True'
elif x == 5:
    test = 'False'
else:
    test = 'Inconclusive'

此处elif是单if语句的一部分,现在只执行三个块中的一个。