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

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

  • Задание 1 — цикл по символам и проверка isdigit().
  • Задание 2 — приведение к нижнему регистру, count() и накопление уже выведенных символов.
  • Задание 3 — split(), проверка числа, умножение и join().

Ответы на вопросы для закрепления

Блок 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 и регулярные выражения выходят за рамки исходного занятия. Используйте их как дополнение.