МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»
Методическая разработка
«Проект на Python: «Своя игра»
к дополнительной общеобразовательной
общеразвивающей программе
технической направленности
«Программирование на Python»
Возраст детей: 10-17 лет
Автор: Костычев Вадим Александрович
г. Заречный Пензенской области
2024 г.
В ходе изучения программирования на основе языка Python большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, вспомнить работу различных функций, команд, развить навыки построения алгоритмов.
Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы над проектом на языке Python.
Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Программирование на Python». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы для решения собственных задач.
Самостоятельная разработка PET-проектов является неотъемлемой частью обучения программирования. Она помогает не только глубже вникнуть в работу языка программирования, но и изучить различные библиотеки, научить самостоятельно строить алгоритм. PET-проекты могут быть развлекательного характера, а могут выполнять определенную очень важную функцию – таким проектом можно поделиться с близкими, друзьями, коллегами или опубликовать в какой-либо социальной сети или форуме.
Данная методическая разработка предлагает один из возможных вариантов PET-проекта. Проект «Своя игра» позволяет не только создать аналог популярной телевизионной игры, но и познакомиться или актуализировать знания учащихся о библиотеке random, поработать с функциями, условным оператором, циклами.
Проект: «Своя игра»
Описание проекта: создание консольной игры на Python, в которой игроки выбирают категорию, стоимость (сложность) вопроса из предложенных, и отвечают на них. Победителем игры считается игрок, набравший наибольшее количество баллов.
Цель проекта: написать программу,
Темы, которые необходимо знать для разработки проекта:
Шаги разработки программы:
Инициализация данных:
Вопросы организованы в виде словаря, где каждая категория содержит несколько вопросов с разной сложностью. У каждого вопроса есть текст и правильный ответ.
Регистрация игроков:
Пользователь вводит количество игроков и их имена. Для каждого игрока создается запись в словаре, где счет изначально равен нулю.
Основной игровой процесс:
– Пока в игре остаются вопросы, игроки по очереди выбирают категорию и сложность вопроса.
– Выбранный вопрос задается текущему игроку, который вводит свой ответ.
– Программа проверяет ответ: если он правильный, игроку начисляются очки в зависимости от сложности вопроса. Если ответ неверный, очки не начисляются, и показывается правильный ответ.
– Использованный вопрос удаляется из базы данных.
Завершение игры:
Игра заканчивается, когда все вопросы исчерпаны. После этого программа сортирует игроков по количеству очков, выводит результаты и объявляет победителя.
Особенности реализации:
– Для выбора игрока случайным образом используется генерация случайного числа.
– Программа учитывает ввод пользователя, проверяя доступность выбранных категорий и сложностей.
– Удаление вопросов из базы данных предотвращает их повторное использование.
Код подчеркивает важность структурированного хранения данных, работы с циклами и проверкой пользовательского ввода.
Листинг программы
import random
# 1. Данные игры: категории и вопросы
questions = {
"Математика": {
100: ("Сколько будет 2+2?", "4"),
200: ("Чему равен квадрат числа 5?", "25"),
300: ("Решите уравнение: 3x = 9", "3"),
},
"География": {
100: ("Какой самый большой океан на Земле?", "Тихий"),
200: ("Столица Франции?", "Париж"),
300: ("Самая высокая гора в мире?", "Эверест"),
},
"Наука": {
100: ("Какой газ люди выдыхают?", "Углекислый газ"),
200: ("Кто изобрел лампочку?", "Эдисон"),
300: ("Чему равна температура кипения воды в градусах Цельсия?", "100"),
},
}
# 2. Инициализация счета и игроков
players = {}
num_players = int(input("Сколько игроков участвует? "))
for i in range(1, num_players + 1):
name = input(f"Введите имя игрока {i}: ")
players[name] = 0
# 3. Основной игровой цикл
while any(category for category in questions.values() if category):
print("\nДоступные категории:")
for category in questions:
print(f"- {category}")
# Игрок выбирает категорию и сложность
current_player = list(players.keys())[random.randint(0, len(players) - 1)]
print(f"\nХод игрока: {current_player}")
category = input("Выберите категорию: ").strip()
if category not in questions or not questions[category]:
print("Категория недоступна. Выберите другую.")
continue
print("Доступные сложности:", list(questions[category].keys()))
difficulty = int(input("Выберите сложность (очков): ").strip())
if difficulty not in questions[category]:
print("Сложность недоступна. Выберите другую.")
continue
# Задаем вопрос
question, correct_answer = questions[category][difficulty]
print(f"\nВопрос на {difficulty} очков: {question}")
answer = input("Ваш ответ: ").strip()
# Проверка ответа
if answer.lower() == correct_answer.lower():
print("Правильно!")
players[current_player] += difficulty
else:
print(f"Неправильно! Правильный ответ: {correct_answer}")
# Удаляем вопрос после использования
del questions[category][difficulty]
# 4. Вывод результатов
print("\nИгра окончена! Итоговые результаты:")
for name, score in sorted(players.items(), key=lambda x: x[1], reverse=True):
print(f"{name}: {score} очков")
winner = max(players, key=players.get)
print(f"\nПобедитель: {winner}! Поздравляем!")
Данный проектом мы пользуемся на своих занятиях. Он помогает учащимся закрепить основы Python, включая циклы, условные операторы, функции, словари и работу с пользовательским вводом.