Nerrdsy (обсуждение | вклад) (Новая страница: «123») |
Nerrdsy (обсуждение | вклад) Нет описания правки |
||
| Строка 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) | |||
Версия от 19:00, 18 октября 2025
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)