Python
Практические задачи по Python: функции, строки и списки
Функции, строки и списки часто встречаются вместе: вы принимаете строку, очищаете ее, проходите по списку и возвращаете результат
Эти задачи помогают перейти от отдельных команд к маленьким полезным функциям, которые можно переиспользовать
Как работать с подборкой
Подборка тренирует функции, return, обработку строк, фильтрацию списков и простые словари результата
Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым
После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру
Задачи с решениями
Задача 1. Очистить имя
Условие: Напишите функцию, которая убирает пробелы по краям и делает первую букву заглавной
Подсказка: strip и capitalize можно соединить в одном выражении
Решение:
def clean_name(name):
return name.strip().capitalize()
print(clean_name(" anna "))
Проверка: Проверьте имя с пробелами и разным регистром
Задача 2. Длина без пробелов
Условие: Функция принимает строку и считает символы без пробелов
Подсказка: replace может убрать пробелы внутри строки
Решение:
def count_without_spaces(text):
text = text.replace(" ", "")
return len(text)
print(count_without_spaces("py thon"))
Проверка: Для py thon результат должен быть 6
Задача 3. Фильтр коротких слов
Условие: Функция возвращает слова длиной не меньше заданного минимума
Подсказка: Передайте минимум вторым аргументом
Решение:
def filter_words(words, min_length):
result = []
for word in words:
if len(word) >= min_length:
result.append(word)
return result
print(filter_words(["cat", "python", "go"], 3))
Проверка: Проверьте min_length 2 и 5
Задача 4. Список имен из строк
Условие: Дан список строк с пробелами, верните очищенные имена
Подсказка: Не меняйте исходный список, создайте новый
Решение:
def clean_names(names):
result = []
for name in names:
result.append(name.strip().title())
return result
print(clean_names([" anna", "IVAN "]))
Проверка: Результат должен быть [‘Anna’, ‘Ivan’]
Задача 5. Подсчет частоты букв
Условие: Функция считает, сколько раз встречается каждая буква в слове
Подсказка: Словарь подходит для подсчета
Решение:
def count_letters(word):
counts = {}
for char in word:
counts[char] = counts.get(char, 0) + 1
return counts
print(count_letters("banana"))
Проверка: Для banana буква a должна встретиться 3 раза
Задача 6. Безопасное деление
Условие: Функция делит два числа и возвращает None при делении на ноль
Подсказка: Так вызывающий код сможет отдельно обработать отсутствие результата
Решение:
def safe_divide(a, b):
if b == 0:
return None
return a / b
print(safe_divide(10, 2))
print(safe_divide(10, 0))
Проверка: Проверьте обычное деление и деление на ноль
Задача 7. Нормализация списка цен
Условие: Строки с ценами превратите в числа, пустые значения пропустите
Подсказка: Сначала очистите строку, потом проверяйте пустоту
Решение:
def normalize_prices(values):
prices = []
for value in values:
value = value.strip()
if value:
prices.append(float(value))
return prices
print(normalize_prices([" 10.5", "", "20 "]))
Проверка: Результат должен быть [10.5, 20.0]
Задача 8. Поиск слова
Условие: Функция проверяет, есть ли слово в строке без учета регистра
Подсказка: Приведите обе строки к нижнему регистру
Решение:
def contains_word(text, word):
return word.lower() in text.lower()
print(contains_word("I learn Python", "python"))
Проверка: Проверьте разный регистр
Задача 9. Склеить теги
Условие: Функция принимает список тегов и возвращает строку через запятую
Подсказка: join работает со списком строк
Решение:
def join_tags(tags):
return ", ".join(tags)
print(join_tags(["python", "beginner", "tasks"]))
Проверка: Проверьте пустой список
Задача 10. Мини-отчет по числам
Условие: Функция возвращает словарь с количеством, суммой и средним
Подсказка: Если список пустой, среднее должно быть 0
Решение:
def numbers_report(numbers):
total = sum(numbers)
count = len(numbers)
average = total / count if count else 0
return {"count": count, "total": total, "average": average}
print(numbers_report([10, 20, 30]))
Проверка: Проверьте пустой список
Задача 11. Сократить длинный текст
Условие: Функция принимает текст и максимальную длину, возвращает короткую версию
Подсказка: Если текст уже короткий, верните его без изменений
Решение:
def shorten(text, max_length):
if len(text) <= max_length:
return text
return text[:max_length] + "..."
print(shorten("Python для начинающих", 6))
Проверка: Проверьте короткий и длинный текст
Задача 12. Найти самое длинное слово
Условие: Функция принимает список слов и возвращает самое длинное
Подсказка: Если список пустой, верните пустую строку
Решение:
def longest_word(words):
if not words:
return ""
longest = words[0]
for word in words:
if len(word) > len(longest):
longest = word
return longest
print(longest_word(["go", "python", "sql"]))
Проверка: Проверьте список с одним словом и пустой список
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы
Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается
Частые ошибки новичков
- читать решение, но не запускать его руками
- менять сразу несколько строк и не понимать, какая из них сломала код
- называть переменные одной буквой там, где можно написать понятное имя
- забывать проверять пустые строки, пустые списки и ноль
- путать вывод через print и возврат результата через return
- оставлять код рабочим только для одного заранее выбранного примера
Дополнительные задачи
Задача 13. Нормализация списка имен
Условие: Приведите имена к единому виду: убрать пробелы и сделать первую букву заглавной
raw_names = [" анна", "ИВАН ", " оЛеГ"]
clean_names = []
for name in raw_names:
clean_names.append(name.strip().capitalize())
print(clean_names)
Проверка: Добавьте пустую строку и решите, нужно ли пропускать ее
Задача 14. Функция поиска коротких слов
Условие: Напишите функцию, которая возвращает слова короче заданной длины
def short_words(words, limit):
result = []
for word in words:
if len(word) < limit:
result.append(word)
return result
print(short_words(["python", "css", "html", "js"], 4))
Проверка: Вызовите функцию с разными значениями limit