2016-01-08 3 views
-2

Доброе утро,питон: если оператор и несколько значений переменных

Моя проблема заключается в следующем:

if variable == 'string1': 
    do_stuff 
elif variable == 'string2' or 'string3': 
    do_stuff2 

Это не работает, как это должно: делать «stuff2», когда переменная равна «string2» или "string3".

Чтобы сделать это, я должен исправить следующий код:

if variable == 'string1': 
    do_stuff 
elif variable == 'string2' or variable == 'string3': 
    do_stuff2 

Этот код работает отлично: когда переменная равна «string2» или «string3», код excutes stuff2.

Я не понимаю, в чем разница между: elif variable == 'string2' or variable == 'string3' и elif variable == 'string2' or 'string3'.

Что понимает питон во второй версии?

Спасибо за вашу помощь,

Pado

+1

, потому что это правильный синтаксис для логического предиката вы хотите, чтобы выразить – Pynchia

+1

переменную '==«string2»или«string3'' Оценивает to '(variable == 'string2') или 'string3''. –

+1

Это не дубликат, это конкретный вопрос о проблеме, когда Pado понимает синтаксис. – Joe

ответ

0

ли это поможет вам понять:

>>> x = 'Test' 
>>> 
>>> x == 'Test1' or 'Test2' 
'Test2' #Expression evaluated to value of 'Test2' as first was False 
>>> 
>>> x == 'Test1' or 'Test' 
'Test' #Expression evaluated to value of 'Test' as first was False 
>>> 
>>> x == 'Test' or 'Test1' 
True #Expression evaluated to True as x is truly 'Test' 
>>> 
>>> x == 'Test1' or x == 'Test' 
True #Expression evaluated to True as second expression was True 
0

Попробуйте в REPL.

>>> "one" or "two" 
'one' 

Это «короткое замыкание или». Он возвращает первое значение, отличное от False.

Смысл оператора «или» - это то или иное значение, правдивое? ». Функция короткого замыкания, которая возвращает первое правное значение, является бонусной функцией.

Так что ваше утверждение

elif variable == 'string2' or 'string3': 

фактически означает

elif variable == 'string2': 
Смежные вопросы