Ответы на разминку
- 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.