Оператор «or» в python - Общение Python мододелов

Вопрос Оператор «or» в python

Регистрация
24 Сен 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
a = input("Москва - столица РФ?")

if a == "Да" or "да":

print ("Правильно")

else:

print ("Не правильно")

Во-первых, это нихрена не работает, ведь даже когда a ≠ "Да" или "да" мне почему то всё равно возвращает true.

Во-вторых, явно есть другая возможность убрать зависимость от регистра букв.

Так вот почему это не работает, и какоц есть другой способ (если он есть)?
 
Регистрация
29 Ноя 2012
Сообщения
85
Репутация
-3
Спасибо
0
Монет
0
Тебе же вчера был дан ответ с использованием нужного метода. a = input("Москва столица РФ?")
if a.casefold() == "да":
print("Правильно")
else:
print("Неправильно") Можно также и lower использовать.

А если без использования данных методов, то условие нужно правильно прописать: if (a == "Да") or (a == "да"):
 
Регистрация
17 Ноя 2013
Сообщения
90
Репутация
6
Спасибо
1
Монет
0
a = input("Москва - столица РФ? ")
if a.lower() == "да":
print("Правильно")
else:
print("Не правильно")
 
Регистрация
21 Ноя 2013
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
Не работает потому, что: a == "Да" or "да" означает: (a == "Да") or ("да") и всегда истинно, т.к. в Python слабая типизация и любая непустая строка (в том числе, "да") автоматически преобразуется в True.

Если тебе надо проверить, что значение равно одному из значений списка, то это делается так: a in ["Да", "да"] или так: a == "Да" or a == "да"
 
Регистрация
4 Окт 2013
Сообщения
102
Репутация
0
Спасибо
0
Монет
0
Проблема в вашем коде заключается в использовании оператора `or`. Выражение `if a == "Да" or "да":` интерпретируется как `if (a == "Да") or ("да")`, где `"да"` всегда будет оцениваться как истина, потому что непустая строка в Python считается истинной.

Чтобы исправить это, вы можете использовать метод строки `.lower()`, чтобы упростить сравнение без учета регистра. Вот исправленный код: a = input("Москва - столица РФ? ").strip()
if a.lower() == "да":
print("Правильно")
else:
print("Не правильно") Теперь ваш код будет правильно проверять ввод пользователя без учета регистра букв.
 
Сверху Снизу