2013-09-19 4 views
1

Я в настоящее время новичок в Python и пытаюсь запустить несколько простых строк кода. Я не могу понять, как Python оценивает этот синтаксис после инструкции , если. Любые объяснения будут оценены.Как работают булевы операторы в условиях «если»?

number = int(raw_input("Enter number : ")) 

if number == (1 or 2 or 3): 
    print "Match" 
else: 
    print "No match" 

только выход целое число 1 положительного результата и любые другие номера, включая 2 и 3 пройти через еще отрасли. Можно ли сформулировать следующие условия только:

if number == 1 or number == 2 or number == 3: 

Спасибо.

ответ

3

Python имеет булевы значения, такие как True и False, and it also has falsy values, например, любой пустой список, кортеж, или словарь, пустая строка, 0 и None. Истинные значения противоположны этому, а именно все, что определено.

Питон orevaluates and short-circuts на первый элементе, который возвращает truthy значения.

Итак, выражение (1 or 2 or 3) собирается вернуть 1.

Если вы хотите сравнить против всех элементов, то вы ищете in ключевое слово:

if number in (1, 2, 3): 
    # Do logic 
+0

Спасибо за информацию и ссылки. Я не знал об этом решающем различии «правдивых» и «ложных» ценностей, и теперь все это имеет смысл. Если первое значение почти что угодно, то остальная часть серии булевых операторов будет проигнорирована. – UnknownMessenger

6

Вы, вероятно, хотите:

if number in (1, 2, 3): 
2

Оператор or принимает два аргумента, на левой и правой сторон, и выполняет следующие действия логика:

  1. Оценить материал на левой стороне.
  2. Если это истинное значение (например, bool(x) is True, то это не ноль, пустая строка или None), верните его и остановите.
  3. В противном случае, оцените материал с правой стороны и верните это.

Таким образом, 1 or 2 or 3 просто 1, поэтому ваше выражение превращается в:

if number == (1): 

Если вы на самом деле означает number == 1 or number == 2 or number == 3 или number in (1, 2, 3), вам нужно сказать.

(Кстати: Оператор and работает точно так же, за исключением шага 2 возвращается, если левая сторона является falsey.)

Смежные вопросы