|
|
| Строка 1: |
Строка 1: |
| 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)
| |