Top.Mail.Ru
Ответы

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

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

По дате
По рейтингу
Аватар пользователя
Гений
9мес

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

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

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

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 ["береза", "дуб", "акация"]:
Хочешь — помогу и с остальными вопросами в викторине.

Аватар пользователя
Ученик
9мес

это за 2 минуты ты так написал много, да ?

Аватар пользователя
Ученик
9мес

Здравствуйте, мне нужно, что бы правильный ответ был "береза дуб акация", можно будет так сделать ?

Аватар пользователя
Ученик
9мес

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

Аватар пользователя
Ученик
9мес

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("Неправильно")

Аватар пользователя
Ученик
9мес

q4 = input("Четвертый вопрос. Доски можно сделать из ...?")

if q4 == "береза " and q4 == " дуб " and q4 == " акация":

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

point += 1

else:

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

q5 = input("Пятый вопрос. Можно ли создать портал с помощью лавы?")

if q5 == "да":

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

point += 1

else:

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

print("Поздравляю, вы прошли весь квиз и заработали ",point," балла -(ов)")

Аватар пользователя
Ученик
9мес

по идеи это вопрос-ответ и в этом месте - if q4 == "береза " and q4 == " дуб " and q4 == " акация": игрок должен написать ответ береза дуб акация, но что то идет не по плану

Аватар пользователя
Ученик
9мес

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

Аватар пользователя
Ученик
9мес

попробовал тоже не работает



Видео по теме