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

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x