import random
def run_quiz(questions):
""" Проводит интерактивный тест на основе предоставленных вопросов.
Args:
questions (list): Список словарей, где каждый словарь содержит:
'question': Текст вопроса (str)
'options': Список вариантов ответов (list of str)
'answer': Правильный ответ (str)
"""
score = 0
random.shuffle(questions) # Перемешиваем вопросы для разнообразия
print("Добро пожаловать в викторину!\n")
for i, q_data in enumerate(questions):
question = q_data['question']
options = q_data['options']
correct_answer = q_data['answer']
print(f"Вопрос {i + 1}: {question}")
# Перемешиваем варианты ответов для каждого вопроса
shuffled_options = list(options)
random.shuffle(shuffled_options)
# Отображаем варианты ответов с буквами (A, B, C, D...)
option_letters = {}
for j, option in enumerate(shuffled_options):
letter = chr(ord('A') + j) # Получаем буквы A, B, C...
print(f" {letter}) {option}")
option_letters[letter] = option
while True:
user_answer_letter = input("Ваш ответ (A, B, C...): ").upper()
if user_answer_letter in option_letters:
user_answer = option_letters[user_answer_letter]
break
else:
print("Некорректный ввод. Пожалуйста, выберите букву из предложенных вариантов.")
if user_answer == correct_answer:
print("Правильно!\n")
score += 1
else:
print(f"Неправильно. Правильный ответ: {correct_answer}\n")
print(f"Викторина окончена! Ваш результат: {score} из {len(questions)}")
percentage = (score / len(questions)) * 100 if questions else 0
print(f"Процент правильных ответов: {percentage:.2f}%\n")
- --- Пример использования ---
- Список вопросов для теста
- Каждый вопрос - это словарь с ключами 'question', 'options', 'answer'
quiz_questions = [
{
'question': "Какая столица Франции?",
'options': ["Берлин", "Мадрид", "Париж", "Рим"],
'answer': "Париж"
},
{
'question': "Сколько планет в Солнечной системе?",
'options': ["7", "8", "9", "10"],
'answer': "8"
},
{
'question': "Какое химическое соединение имеет формулу H2O?",
'options': ["Кислород", "Водород", "Вода", "Соль"],
'answer': "Вода"
},
{
'question': "Кто написал 'Война и мир'?",
'options': ["Федор Достоевский", "Антон Чехов", "Иван Тургенев", "Лев Толстой"],
'answer': "Лев Толстой"
},
{
'question': "Сколько дней в високосном году?",
'options': ["365", "366", "367", "360"],
'answer': "366"
}
]
if __name__ == "__main__":
run_quiz(quiz_questions)