← Все вопросы

викторина на python с вопросами и подсчётом очков — как собрать?

Задан 19 месяцев назад1.5к просмотров2 ответа
6

Хочу сделать квиз-викторину для одноклассников: задаю вопросы, они отвечают, в конце показываю сколько баллов набрали. Сделал один вопрос, но не пойму как сделать много вопросов и считать очки красиво, не копировать же if двадцать раз:

ans = input("Столица Франции? ")
if ans == "Париж":
    print("Верно!")

2 ответа

12
✓ Принятый ответ — помог автору

Копировать 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), чтобы каждый раз был новый порядок.

3

Если хочешь варианты ответов (А/Б/В как в ЕГЭ), храни их в словаре и показывай списком, а сравнивай букву. И в конце прикольно выводить оценку: больше 80% — «5», и так далее. Одноклассники любят когда есть «оценка».

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект