✅ Решения заданий

⚡ Решения в двух словах

  • Разминка: a, a, a, a, a, b, a, b.
  • Удаление лишних символов: фильтрация через генераторное выражение.
  • Панграмма: множество букв строки содержит все буквы алфавита.
  • ДЗ: замена цифр, подсчёт символов, замена чисел через регулярные выражения.

Ответы на разминку

  • 1 — a: True.
  • 2 — a: True.
  • 3 — a: True.
  • 4 — a: 19.
  • 5 — a: 7.
  • 6 — b: ошибка ValueError.
  • 7 — a: "Python".
  • 8 — b: "a p p l e".

Решение задачи 1: удаление лишних символов

📄 task_01_clean.py
text = input("Введите строку: ")
clean = ""
for char in text:
    if char.isalnum() or char.isspace():
        clean += char
print(f"Результат: {clean}")

Логика: оставляем только буквы, цифры и пробелы, остальные символы пропускаем.

💡 Современный вариант:
text = input("Введите строку: ")
clean = "".join(char for char in text if char.isalnum() or char.isspace())
print(f"Результат: {clean}")

Решение задачи 2: проверка на панграмму

📄 task_02_pangram.py
text = input("Введите строку: ")
letters = set(char.lower() for char in text if char.isalpha())
alphabet = set("abcdefghijklmnopqrstuvwxyz")
print(f"Панограмма? {alphabet <= letters}")

Логика: собираем множество букв из строки в нижнем регистре и проверяем, что оно содержит все буквы алфавита.

Решение ДЗ 1: звёздочки вместо чисел

📄 hw_01_stars.py
text = "My number is 123-456-789"
result = ""
for char in text:
    if char.isdigit():
        result += "*"
    else:
        result += char
print(f"Строка: {text}")
print(f"Результат: {result}")
💡 Современный вариант:
text = "My number is 123-456-789"
result = "".join("*" if char.isdigit() else char for char in text)
print(f"Результат: {result}")

Решение ДЗ 2: количество символов

📄 hw_02_char_count.py
text = "Programming in python"
lower_text = text.lower()
counts = {}

for char in lower_text:
    counts[char] = counts.get(char, 0) + 1

print(f"Строка: {text}")
for char, count in counts.items():
    if count > 1:
        print(f"Символ '{char}' встречается {count} раз(а)")

Логика: считаем вхождения каждого символа в нижнем регистре, выводим только те, что встречаются более одного раза.

Решение ДЗ 3: увеличение чисел

📄 hw_03_multiply_numbers.py
import re

text = "I have 5 apples and 10 oranges, price is 0.5 each. Card number is ....3672."

def multiply_match(match: re.Match) -> str:
    number = float(match.group())
    return str(number * 10)

result = re.sub(r"\b\d+(?:\.\d+)?\b", multiply_match, text)
print(result)

Логика: регулярное выражение находит числа (целые и дробные) как целые слова, функция умножает каждое на 10. Число 3672 после точек не является отдельным словом, поэтому не заменяется.

Проверить по документации: регулярные выражения (re) и множества (set) выходят за рамки исходного занятия, но являются стандартными возможностями Python.