如果我有两个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”。有谁知道为什么?
答案 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
语句的一部分,现在只执行三个块中的一个。