🏠 Домашнее задание

⚡ Суть задания

Домашнее задание закрепляет работу со строковыми методами. Нужно решить три задачи:

  • Заменить все цифры в строке на звёздочки.
  • Подсчитать повторяющиеся символы (без учёта регистра).
  • Умножить все числа в строке на 10.

Результат: 3 рабочих файла .py, которые корректно обрабатывают данные.

📋 Формулировка задания

Исходное задание из LMS:

  1. Звёздочки вместо чисел. Напишите программу, которая заменяет все цифры в строке на звёздочки *.
    text = "My number is 123-456-789"
    
    # Пример вывода:
    Строка: My number is 123-456-789
    Результат: My number is ***-***-***
  2. Количество символов. Напишите программу, которая подсчитывает количество вхождений всех символов в строке. Нужно вывести только символы, которые встречаются более 1 раза (игнорируя регистр), с указанием их количества. Выводите повторяющиеся символы только один раз.
    text = "Programming in python"
    
    # Пример вывода:
    Строка: Programming in python
    Символ 'p' встречается 2 раз(а)
    Символ 'r' встречается 2 раз(а)
    Символ 'o' встречается 2 раз(а)
    Символ 'g' встречается 2 раз(а)
    Символ 'm' встречается 2 раз(а)
    Символ 'i' встречается 2 раз(а)
    Символ 'n' встречается 3 раз(а)
    Символ ' ' встречается 2 раз(а)
  3. Увеличение чисел. Напишите программу, которая заменяет все числа в строке на их эквивалент, умноженный на 10.
    text = "I have 5 apples and 10 oranges, price is 0.5 each. Card number is ....3672."
    
    # Пример вывода:
    I have 50.0 apples and 100.0 oranges, price is 5.0 each. Card number is ....3672.

🔧 Шаг 0. Подготовка окружения

Перед началом работы настройте окружение. Эти шаги одинаковы для всех уроков курса.

📁 Структура репозитория: мы используем один репозиторий для всех практических работ. Это удобнее, чем десятки отдельных репозиториев: общий .gitignore, единая история, легко переключаться между уроками.
1

Создайте (или откройте) рабочую папку

В VS Code нажмите Ctrl+K Ctrl+O → выберите или создайте папку python-fundamentals-practice. Это будет корень вашего учебного репозитория.

# Или в терминале VS Code (Ctrl + `):
mkdir python-fundamentals-practice
cd python-fundamentals-practice
2

Инициализируйте Git-репозиторий (один раз)

Если папка ещё не является git-репозиторием:

git init

echo "# Python Fundamentals — Практические работы" > README.md
echo "venv/" > .gitignore
echo "__pycache__/" >> .gitignore
echo "*.pyc" >> .gitignore
echo ".env" >> .gitignore

git add README.md .gitignore
git commit -m "init: базовая структура репозитория"
3

Создайте папку для текущего урока

mkdir -p lesson-20
cd lesson-20
4

Создайте виртуальное окружение (venv)

# Windows
python -m venv venv
venv\Scripts\activate

# Mac / Linux
python3 -m venv venv
source venv/bin/activate

После активации в начале строки терминала появится (venv). Все дальнейшие команды выполняйте внутри venv.

5

Создайте ветку для задания

cd ..
git checkout -b lesson/20-string-methods
git push -u origin lesson/20-string-methods

Именование веток: lesson/XX-краткое-название.

🛠️ Шаги выполнения заданий

1

Создайте файлы для заданий

task_01_stars.py
task_02_char_count.py
task_03_multiply_numbers.py
2

Решите задание 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}")
3

Решите задание 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
4

Решите задание 3: увеличение чисел

Разбейте строку на слова, умножьте числа на 10 и соберите строку обратно.

📄 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)
5

Проверьте каждый файл в VS Code

python task_01_stars.py
python task_02_char_count.py
python task_03_multiply_numbers.py

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

🧪 Как проверить решение

  1. Активируйте venv: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  2. Запустите каждый файл: python task_XX_....py.
  3. Убедитесь, что нет ошибок и вывод соответствует условию.
  4. Проверьте граничные случаи: пустая строка, строка без цифр, строка без повторяющихся символов, дробные числа.

🐛 Отладка в VS Code

  1. Поставьте точку останова кликом слева от номера строки.
  2. Нажмите F5 или выберите «Run → Start Debugging».
  3. Используйте панель Debug (переменные, стек вызовов, консоль).
  4. Проверьте Terminal на наличие traceback — Python показывает номер строки с ошибкой.
  5. Если метод не меняет строку, проверьте, присвоен ли результат новой переменной.

💾 Сохранение работы

git add lesson-20/
git commit -m "lesson-20: string methods"
git push

💡 Советы и типичные ошибки

  • Убедитесь, что venv активирован перед запуском.
  • Не коммитьте папку venv/ — она указана в .gitignore.
  • Помните, что строки неизменяемы: результат метода нужно сохранять.
  • Для безопасного поиска используйте find(), если подстрока может отсутствовать.
  • Не путайте split() и split(" "): первый обрабатывает любые пробелы, второй — только один.
Проверить по документации: f-strings и преобразование float() выходят за рамки исходного занятия, но являются стандартными возможностями Python.