Использование .lower или 'or' в выражении if __ is __ приводит к некорректному отображению потока операторов в python 3.6 - PullRequest
0 голосов
/ 04 июля 2018

Я искал и не мог найти никого, у кого была такая же проблема, хотя я очень плохо знаком с python и есть большая вероятность, что это просто ошибка пользователя.

У меня проблемы с использованием 'или' и .lower в операторе if. Если я использую код:

print('press Y to continue or Q to quit')
end = input()
if end is 'y':
    continue
else:
    break

тогда мой код работает правильно, хотя, если пользователь набирает заглавную Y, программа переходит к оператору else и завершает программу. Если я использую следующий код:

print('press Y to continue or Q to quit')
end = input()
end = end.lower()
if end is 'y': #I have also tried end.lower() here, removing the line above
    continue
else:
    break

Программа продолжает прерываться при любом вводе Если я печатаю 'end' перед оператором if, он возвращает:

<built-in method lower of str object at 0x7fa6b8176f80>

Я также пытался заменить на ==, что дает мне те же результаты. Есть ли проблема с тем, как я выражаю свое утверждение if is?

1 Ответ

0 голосов
/ 04 июля 2018

У вас есть две проблемы:

  1. Вы используете end.lower вместо end.lower(). Это означает, что Python будет видеть метод str.lower вместо своего результата.
  2. Вы можете использовать is вместо ==. Это заставляет Python, чтобы проверить, если две такие же объект, то есть в том же физическом пространстве на вашем компьютере. == проверяет, если они имеют одинаковое значение. В общем, вы почти всегда хотите ==.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...