Top.Mail.Ru
Ответы

Ошибка в коде питон

когда пишу правильный ответ на вопрос пишет, что он не правильный в чем проблема ? интересует 25 строчка

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Высший разум

Если тебе нужно проверить, что строка состоит из трёх заданных слов в произвольном порядке, то проще всего это сделать так:

1
 if set(q4.split()) == {"береза", "дуб", "акация"}: 
Аватар пользователя
Ученик

Вот эта строка:

python
Копировать
Редактировать
if q4 == "береза" and "дуб" and "акация":
На самом деле всегда будет возвращать True, потому что:

"дуб" и "акация" — это непустые строки, а значит, в логическом выражении они считаются True.

А q4 == "береза" проверяется отдельно.
Всё это эквивалентно:

python
Копировать
Редактировать
if (q4 == "береза") and True and True:
Если q4 не равно "береза" — результат False, но если оно "береза" — будет True, даже если ты не ввёл "дуб" и "акация".

🔧 Как исправить
Если ты хочешь, чтобы один из трёх вариантов считался правильным, то нужно так:

python
Копировать
Редактировать
if q4 in ["береза", "дуб", "акация"]:
Это проверит, входит ли введённый пользователем текст в список правильных ответов.

✅ Итог
Замените 25 строку на:

python
Копировать
Редактировать
if q4 in ["береза", "дуб", "акация"]:
И всё будет работать корректно.

Если нужно сравнение без учёта регистра (например, "Берёза", "БЕРЕЗА"), то можно добавить .lower():

python
Копировать
Редактировать
if q4.lower() in ["береза", "дуб", "акация"]:
Хочешь — помогу и с остальными вопросами в викторине.

Аватар пользователя

мне нужен полный код , а то я логику не понимаю

Аватар пользователя
Мастер

Проблема в строке 25: оператор and в Python работает не так, как ожидается. Нужно сравнить q4 с каждым вариантом ответа отдельно: if q4 == "береза" or q4 == "дуб" or q4 == "акация":