2017-02-22 44 views
-8

Если у меня есть два, если заявления, за которым следует еще тогда первый один, по существу, игнорировали:Python второй «если заявление» нивелирует первый один

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

print(test) 

Возвраты:

Inconclusive 

Мне кажется, что, поскольку первый оператор if равен True, результат должен быть «True». Чтобы это произошло, второй оператор if должен быть изменен на «elif». Кто-нибудь знает, почему?

+2

'else' прикреплен к предыдущему' if' ... что вы здесь не понимаете? – miradulo

+0

Поскольку второй 'if..else' ** все еще выполняется **. Вместо этого вы хотите использовать 'if..elif..else'? –

+0

Спасибо Митчу, я понял. Я лучше удалю этот, потому что он получает много голосов. Я просто подумал, что он должен смотреть на первое неравенство, которого я не понимал, что они независимы. – sparrow

ответ

4

У вас есть два независимых if заявления. То, что второе такое утверждение имеет набор else, не имеет значения здесь; что else набор выбирается на основании условия, прилагаемого ко второму испытанию if; что произошло в первом if заявление не имеет значения.

Если вы хотите два x испытания на не быть независимыми, используйте одинif заявление и использовать elif набор для второго теста:

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

elif здесь является частью единого if и теперь выполняется только один из трех блоков.

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)