Ошибка в коде питон
когда пишу правильный ответ на вопрос пишет, что он не правильный в чем проблема ? интересует 25 строчка
Если тебе нужно проверить, что строка состоит из трёх заданных слов в произвольном порядке, то проще всего это сделать так:
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 ["береза", "дуб", "акация"]:
Хочешь — помогу и с остальными вопросами в викторине.
это за 2 минуты ты так написал много, да ?
Здравствуйте, мне нужно, что бы правильный ответ был "береза дуб акация", можно будет так сделать ?
мне нужен полный код , а то я логику не понимаю
point = 0
name = input("Напишите ваше имя")
are = input("Напишите ваш возраст")
print("Здравствуйте, вы находитесь на квизе на тему Майнкрафта")
q1 = int(input("Первый вопрос. Сколько палок надо для крафта лестницы в майнкрафт?"))
if q1 == 7:
print("Правильно!")
point += 1
else:
print("Неправильно")
q2 = int(input("Второй вопрос. Сколько досок надо для крафта верстака?"))
if q2 == 4:
print("Правильно!")
point += 1
else:
print("Неправильно")
q3 = input("Третий вопрос. Как можно пожарить еду ?")
if q3 == "печи" or "костер":
print("Правильно")
point += 1
else:
print("Неправильно")
q4 = input("Четвертый вопрос. Доски можно сделать из ...?")
if q4 == "береза " and q4 == " дуб " and q4 == " акация":
print("Правильно")
point += 1
else:
print("Неправильно")
q5 = input("Пятый вопрос. Можно ли создать портал с помощью лавы?")
if q5 == "да":
print("Правильно")
point += 1
else:
print("Неправильно")
print("Поздравляю, вы прошли весь квиз и заработали ",point," балла -(ов)")
по идеи это вопрос-ответ и в этом месте - if q4 == "береза " and q4 == " дуб " and q4 == " акация": игрок должен написать ответ береза дуб акация, но что то идет не по плану
Проблема в строке 25: оператор and в Python работает не так, как ожидается. Нужно сравнить q4 с каждым вариантом ответа отдельно: if q4 == "береза" or q4 == "дуб" or q4 == "акация":
попробовал тоже не работает