Ответы на вопросы для закрепления
Блок 1
- 1.1 —
b:False, потому что строка содержит цифру. - 1.2 —
a:True, оба слова начинаются с заглавной буквы.
Блок 2
- 2.1 —
b: 7, индекс первого вхождения"is". - 2.2 —
b: 2, непересекающиеся вхождения"33"в строке"33333".
Решение задания 1: звёздочки вместо чисел
📄 task_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"Строка: {text}")
print(f"Результат: {result}")
Решение задания 2: количество символов
📄 task_02_char_count.py
text = "Programming in python"
lowercase_text = text.lower()
seen = ""
print(f"Строка: {text}")
for char in lowercase_text:
count = lowercase_text.count(char)
if count >= 2 and char not in seen:
print(f"Символ '{char}' встречается {count} раз(а)")
seen += char
Логика решения: приводим строку к нижнему регистру, чтобы игнорировать регистр. Для каждого символа считаем количество вхождений через count(). Если символ повторяется и ещё не выводился, печатаем его и добавляем в строку seen.
💡 Современный вариант:
text = "Programming in python"
lowercase_text = text.lower()
seen = set()
print(f"Строка: {text}")
for char in lowercase_text:
count = lowercase_text.count(char)
if count >= 2 and char not in seen:
print(f"Символ '{char}' встречается {count} раз(а)")
seen.add(char)
Проверить по документации: множество
set и генераторные выражения выходят за рамки исходного занятия.
Решение задания 3: увеличение чисел
📄 task_03_multiply_numbers.py
text = "I have 5 apples and 10 oranges, price is 0.5 each. Card number is ....3672."
words = text.split()
for i in range(len(words)):
word = words[i]
if word.isdigit():
words[i] = str(float(word) * 10)
elif word.count(".") == 1 and word.replace(".", "").isdigit():
words[i] = str(float(word) * 10)
result = " ".join(words)
print(result)
Логика решения: разбиваем строку на слова по пробелам. Для каждого слова проверяем, является ли оно целым числом через isdigit(), или дробным — через проверку одной точки и цифр вокруг неё. Если да, заменяем слово на число, умноженное на 10. В конце собираем строку обратно через join().
Проверить по документации: преобразование
float() и обработка дробных чисел выходят за рамки исходного занятия.
💡 Альтернативный вариант через регулярные выражения:
import re
text = "I have 5 apples and 10 oranges, price is 0.5 each. Card number is ....3672."
def multiply(match):
return str(float(match.group()) * 10)
result = re.sub(r"\b\d+(?:\.\d+)?\b", multiply, text)
print(result)
Проверить по документации: модуль
re и регулярные выражения выходят за рамки исходного занятия. Используйте их как дополнение.