Python if заявление не работает, как ожидалось - PullRequest
3 голосов
/ 02 октября 2011

У меня сейчас есть код:

fleechance = random.randrange(1,5)
print fleechance
if fleechance == 1 or 2:
    print "You failed to run away!"
elif fleechance == 4 or 3:
    print "You got away safely!"

fleechance постоянно печатает как 3 или 4, но я продолжаю получать результат "Вам не удалось сбежать!" , может кто-нибудь сказать мне, почему это происходит?

Ответы [ 5 ]

9 голосов
/ 02 октября 2011

Выражение fleechance == 1 or 2 эквивалентно (fleechance == 1) or (2). Число 2 всегда считается «верным».

Попробуйте это:

if fleechance in (1, 2):

РЕДАКТИРОВАТЬ: В вашей ситуации (только 2 варианта), следующее будет еще лучше:

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"
3 голосов
/ 02 октября 2011

Попробуйте

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 4 or fleechance == 3:
    print "You got away safely!"

В качестве альтернативы, если это единственные возможности, вы можете сделать

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"
1 голос
/ 02 октября 2011

То, как вы написали свои утверждения if, неверно.Вы говорите python, чтобы проверить, равняется ли Fleechance 1 истине или 2 - истине.Ненулевое целое число всегда означает истину в условии.Вы должны написать:

fleechance = random.randrange(1,5)
print fleechance
if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 4 or fleechance == 3:
    print "You got away safely!"
1 голос
/ 02 октября 2011

Поскольку вы не спрашиваете, является ли fleechance 1 или fleechance 2;Вы спрашиваете, является ли

  1. fleechance 1 или
  2. 2 ненулевым.

Конечно, эта вторая частьусловие всегда верно.Попробуйте

if fleechance == 1 or fleechance == 2:
    ...
1 голос
/ 02 октября 2011

Оператор if работает так, как задумано, проблема в том, что порядок операций заставляет этот код делать что-то отличное от того, что вы хотите.

Самое простое решение - сказать:

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 3 or fleechance == 4:
    print "You got away safely!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...