викторина на python с вопросами и подсчётом очков — как собрать?
Хочу сделать квиз-викторину для одноклассников: задаю вопросы, они отвечают, в конце показываю сколько баллов набрали. Сделал один вопрос, но не пойму как сделать много вопросов и считать очки красиво, не копировать же if двадцать раз:
ans = input("Столица Франции? ")
if ans == "Париж":
print("Верно!")
2 ответа
Копировать if двадцать раз не надо — храни вопросы и ответы в списке, а потом пробегись по ним циклом. Вот рабочая викторина:
questions = [
("Столица Франции?", "париж"),
("Сколько ног у паука?", "8"),
("Какой язык мы учим?", "python"),
("2 + 2 * 2 = ?", "6"),
]
score = 0
for question, correct in questions:
ans = input(question + " ").lower().strip()
if ans == correct:
print("Верно!")
score += 1
else:
print(f"Неверно. Правильный ответ: {correct}")
print(f"\nТы набрал {score} из {len(questions)} баллов!")
if score == len(questions):
print("Идеально! Ты гений :)")
Как работает: все вопросы лежат парами (вопрос, правильный ответ) в списке questions. Цикл for идёт по каждой паре, спрашивает и сравнивает ответ. .lower().strip() приводит ввод к нижнему регистру и убирает пробелы — чтобы «Париж», «париж» и «париж » все засчитывались. За верный ответ прибавляем score. В конце печатаем результат.
Как улучшить: добавляй новые вопросы просто строкой в список — менять код не надо. А ещё можно перемешать вопросы через random.shuffle(questions), чтобы каждый раз был новый порядок.
Если хочешь варианты ответов (А/Б/В как в ЕГЭ), храни их в словаре и показывай списком, а сравнивай букву. И в конце прикольно выводить оценку: больше 80% — «5», и так далее. Одноклассники любят когда есть «оценка».