Устали от скучных теоретических заданий? Хотите, чтобы код на Python оживал и приносил реальную пользу? Вы попали по адресу! Python — это не просто предмет в школе, это инструмент, который может автоматизировать рутину, анализировать данные и даже создавать игры.
В этой статье мы собрали 10 практических задач с подробными объяснениями кода. Они помогут закрепить основы программирования и покажут, как технологии работают в реальной жизни.
10 практических задач по Python с объяснениями
1. Умный калькулятор среднего балла
Практическое применение: Автоматический подсчет среднего балла за четверть.
python
# Запрашиваем у пользователя количество предметов
num_subjects = int(input("Введите количество предметов: "))
# Создаем пустой список для оценок
grades = []
# В цикле заполняем список оценками
for i in range(num_subjects):
grade = int(input(f"Введите оценку за предмет {i+1}: "))
grades.append(grade)
# Считаем средний балл
average_grade = sum(grades) / len(grades)
# Выводим результат
print(f"Ваш средний балл: {average_grade:.2f}")
Объяснение кода:
- num_subjects = int(input(...)) - запрашиваем количество предметов и преобразуем в число
- grades = [] - создаем пустой список для хранения оценок
- Цикл for i in range(num_subjects) повторяется столько раз, сколько у нас предметов
- grades.append(grade) - добавляем каждую новую оценку в конец списка
- sum(grades) - встроенная функция Python, которая суммирует все элементы списка
- len(grades) - возвращает количество элементов в списке
- :.2f - форматирование вывода, оставляет только 2 знака после запятой
2. Генератор безопасных паролей
Практическое применение: Создание надежных паролей для аккаунтов.
python
import random
import string
# Задаем символы, из которых будет состоять пароль
letters = string.ascii_letters # все буквы (a-z, A-Z)
digits = string.digits # все цифры (0-9)
symbols = string.punctuation # специальные символы (!, @, # и т.д.)
# Объединяем все символы в одну строку
all_characters = letters + digits + symbols
# Запрашиваем длину пароля у пользователя
length = int(input("Введите желаемую длину пароля: "))
# Генерируем пароль, выбирая случайные символы
password = ''.join(random.choice(all_characters) for i in range(length))
print(f"Ваш новый надежный пароль: {password}")
Объяснение кода:
- import random - импортируем модуль для работы со случайными числами
- import string - импортируем модуль для работы со строками
- string.ascii_letters содержит все английские буквы в верхнем и нижнем регистре
- string.digits содержит цифры от 0 до 9
- string.punctuation содержит специальные символы
- all_characters = letters + digits + symbols - объединяем все символы в одну строку
- random.choice(all_characters) - выбирает случайный символ из строки
- ''.join(...) - объединяет все выбранные символы в одну строку
3. Конвертер валют
Практическое применение: Расчет стоимости покупок в иностранных магазинах.
python
# Задаем фиксированные курсы валют (для примера)
USD_RATE = 95.0
EUR_RATE = 102.5
print("Доступные валюты: 1 - USD, 2 - EUR")
currency = int(input("Выберите валюту (1 или 2): "))
amount_rub = float(input("Введите сумму в рублях: "))
if currency == 1:
result = amount_rub / USD_RATE
print(f"Вы получите {result:.2f} долларов")
elif currency == 2:
result = amount_rub / EUR_RATE
print(f"Вы получите {result:.2f} евро")
else:
print("Ошибка: выберите корректную валюту")
Объяснение кода:
- USD_RATE = 95.0 - создаем константу для курса доллара (принято называть константы заглавными)
- float(input(...)) - преобразуем ввод в дробное число, так как сумма может быть не целой
- Конструкция if/elif/else проверяет выбор пользователя и выполняет соответствующие действия
- amount_rub / USD_RATE - делим рубли на курс, чтобы получить количество валюты
- :.2f - форматируем вывод до 2 знаков после запятой (как в реальных деньгах)
4. Простой шифратор/дешифратор сообщений
Практическое применение: Секретная переписка с друзьями.
python
def caesar_cipher(text, shift, mode='encrypt'):
result = ""
# Если режим - 'decrypt', меняем сдвиг на противоположный
if mode == 'decrypt':
shift = -shift
for char in text:
if char.isalpha(): # Проверяем, является ли символ буквой
# Определяем базовый код для сдвига (для русских букв)
base = ord('А') if char.isupper() else ord('а')
# Сдвигаем символ и добавляем к результату
result += chr((ord(char) - base + shift) % 32 + base)
else:
result += char # Не-буквы оставляем как есть
return result
# Основная программа
message = input("Введите сообщение: ")
shift = int(input("Введите сдвиг (число): "))
action = input("Шифровать или дешифровать? (encrypt/decrypt): ")
encrypted_message = caesar_cipher(message, shift, action)
print(f"Результат: {encrypted_message}")
Объяснение кода:
- def caesar_cipher(...) - объявляем функцию для шифрования/дешифрования
- mode='encrypt' - параметр по умолчанию, если не указан другой режим
- char.isalpha() - проверяет, является ли символ буквой
- ord('А') - возвращает числовой код буквы 'А' в Unicode
- chr(...) - преобразует числовой код обратно в символ
- % 32 - операция modulo для русского алфавита (32 буквы), чтобы зациклить сдвиг
- Функция обрабатывает каждую букву отдельно, а не-буквенные символы оставляет без изменений
5. Таймер обратного отсчета
Практическое применение: Таймер для подготовки к экзаменам.
python
import time
# Запрашиваем время в минутах и переводим в секунды
minutes = int(input("Введите количество минут для таймера: "))
total_seconds = minutes * 60
print("Таймер запущен!")
while total_seconds > 0:
# Вычисляем минуты и секунды для красивого вывода
mins, secs = divmod(total_seconds, 60)
# Форматируем время в виде ММ:СС
timer = '{:02d}:{:02d}'.format(mins, secs)
print(timer, end='\r') # \r возвращает каретку в начало строки
time.sleep(1) # Ждем 1 секунду
total_seconds -= 1
print("Время вышло! 🎉")
Объяснение кода:
- import time - импортируем модуль для работы со временем
- divmod(total_seconds, 60) - возвращает кортеж (минуты, секунды)
- '{:02d}:{:02d}'.format(mins, secs) - форматирует вывод в виде "05:30"
- end='\r' - специальный символ возврата каретки, который перезаписывает предыдущий вывод
- time.sleep(1) - приостанавливает выполнение программы на 1 секунду
- Цикл while выполняется до тех пор, пока время не закончится
6. Анализатор текста
Практическое применение: Анализ школьных сочинений.
python
text = input("Введите текст для анализа: ")
# Считаем количество символов (с пробелами и без)
char_with_spaces = len(text)
char_without_spaces = len(text.replace(" ", ""))
# Разбиваем текст на слова и считаем их количество
words = text.split()
num_words = len(words)
# Находим самое длинное слово
longest_word = max(words, key=len) if words else ""
print(f"Количество символов (с пробелами): {char_with_spaces}")
print(f"Количество символов (без пробелов): {char_without_spaces}")
print(f"Количество слов: {num_words}")
print(f"Самое длинное слово: '{longest_word}'")
Объяснение кода:
- len(text) - возвращает общее количество символов в тексте
- text.replace(" ", "") - удаляет все пробелы из текста
- text.split() - разбивает текст на слова (по пробелам)
- max(words, key=len) - находит самое длинное слово в списке, используя длину как критерий сравнения
- if words else "" - защита от пустого списка слов
- Все вычисления выполняются с помощью встроенных функций Python
7. Игра "Угадай число"
Практическое применение: Развитие логического мышления.
python
import random
# Компьютер загадывает число от 1 до 100
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
print("Я загадал число от 1 до 100. Попробуй угадай!")
print(f"У тебя есть {max_attempts} попыток.")
while attempts < max_attempts:
guess = int(input("Твоя догадка: "))
attempts += 1
if guess < secret_number:
print("Слишком маленькое!")
elif guess > secret_number:
print("Слишком большое!")
else:
print(f"Поздравляю! Ты угадал число {secret_number} за {attempts} попыток!")
break
if guess != secret_number:
print(f"Увы, попытки закончились. Я загадывал число {secret_number}.")
Объяснение кода:
- random.randint(1, 100) - генерирует случайное число от 1 до 100 включительно
- attempts = 0 - счетчик попыток
- max_attempts = 7 - максимальное количество попыток (логарифм от 100)
- Цикл while продолжается, пока есть попытки
- break - прерывает цикл, если число угадано
- После цикла проверяем, было ли угадано число
8. Мини-калькулятор квадратных уравнений
Практическое применение: Решение домашних заданий по алгебре.
python
import math
print("Решаем квадратное уравнение вида: ax² + bx + c = 0")
a = float(input("Введите коэффициент a: "))
b = float(input("Введите коэффициент b: "))
c = float(input("Введите коэффициент c: "))
# Считаем дискриминант
D = b**2 - 4*a*c
# Анализируем дискриминант
if D > 0:
x1 = (-b + math.sqrt(D)) / (2*a)
x2 = (-b - math.sqrt(D)) / (2*a)
print(f"Уравнение имеет два корня: x1 = {x1:.2f}, x2 = {x2:.2f}")
elif D == 0:
x = -b / (2*a)
print(f"Уравнение имеет один корень: x = {x:.2f}")
else:
print("Уравнение не имеет действительных корней.")
Объяснение кода:
- import math - для использования функции извлечения корня sqrt()
- D = b**2 - 4*a*c - формула дискриминанта
- math.sqrt(D) - вычисляет квадратный корень из дискриминанта
- Условные операторы проверяют значение дискриминанта:
D > 0 - два корня
D = 0 - один корень
D < 0 - нет действительных корней - Формулы корней соответствуют математическим правилам
9. Список дел (To-Do List)
Практическое применение: Организация учебных задач.
python
tasks = [] # Наш главный список дел
while True:
print("\n--- Мой Список Дел ---")
print("1. Показать задачи")
print("2. Добавить задачу")
print("3. Удалить задачу")
print("4. Выйти")
choice = input("Выберите действие (1-4): ")
if choice == '1':
if tasks:
print("Ваши задачи:")
for i, task in enumerate(tasks, 1):
print(f"{i}. {task}")
else:
print("Список дел пуст!")
elif choice == '2':
new_task = input("Введите новую задачу: ")
tasks.append(new_task)
print(f"Задача '{new_task}' добавлена!")
elif choice == '3':
if tasks:
print("Ваши задачи:")
for i, task in enumerate(tasks, 1):
print(f"{i}. {task}")
task_num = int(input("Введите номер задачи для удаления: "))
if 1 <= task_num <= len(tasks):
removed_task = tasks.pop(task_num - 1)
print(f"Задача '{removed_task}' удалена!")
else:
print("Неверный номер задачи!")
else:
print("Список дел пуст!")
elif choice == '4':
print("До свидания!")
break
else:
print("Неверный выбор, попробуйте снова.")
Объяснение кода:
- tasks = [] - создаем пустой список для хранения задач
- while True: - бесконечный цикл, который прерывается только при выборе выхода
- enumerate(tasks, 1) - нумерует задачи, начиная с 1 (вместо стандартного 0)
- tasks.append(new_task) - добавляет новую задачу в конец списка
- tasks.pop(task_num - 1) - удаляет задачу по индексу (минус 1, так как нумерация с 1)
- break - выход из бесконечного цикла
10. Простой парсер погоды
Практическое применение: Узнавать погоду в любом городе.
python
import requests
# Используем бесплатный API OpenWeatherMap
API_KEY = "ваш_ключ_api"
city = input("Введите название города: ")
# Формируем URL для запроса
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric&lang=ru"
# Отправляем запрос к API
response = requests.get(url)
weather_data = response.json()
# Обрабатываем ответ
if weather_data["cod"] == 200:
city_name = weather_data["name"]
temp = weather_data["main"]["temp"]
description = weather_data["weather"][0]["description"]
print(f"Погода в городе {city_name}:")
print(f"Температура: {temp}°C")
print(f"Описание: {description.capitalize()}")
else:
print("Город не найден. Проверьте название.")
Объяснение кода:
- import requests - библиотека для отправки HTTP-запросов
- API_KEY - уникальный ключ для доступа к сервису погоды
- f-строка формирует URL с параметрами города, единицами измерения и языком
- requests.get(url) - отправляет GET-запрос к API
- response.json() - преобразует ответ в формат Python (словарь)
- weather_data["main"]["temp"] - обращение к вложенным словарям для получения температуры
- capitalize() - делает первую букву описания заглавной
Каждая из этих программ не только решает практическую задачу, но и учит важным концепциям программирования. От списков и циклов до работы с API — вы осваиваете инструменты, которые используются в реальной разработке.
Совет: Пробуйте модифицировать программы — добавляйте новые функции, улучшайте интерфейс, объединяйте несколько программ вместе!
Присоединяйтесь к нашему каналу в ДЗЕН «Учитель версии 4.0»!
Будем рады видеть вас среди наших подписчиков. На канале вас ждет эксклюзивный контент:
- Разборы сложных задач по Информатике.
- Советы по использованию Digital-инструментов в учебе.
- Актуальные новости из мира образовательных технологий.
Подписывайтесь, чтобы быть в курсе!
Учитель Информатики
Халтурина Надежда Вячеславовна
#Python для начинающих #программирование для школьников #задачи по Python #информатика 8 класс #информатика 9 класс #обучение программированию #кодинг для детей #практические задачи по Python #разработка для подростков #Python проекты #объяснение кода #уроки Python