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

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

Домашнее задание закрепляет работу с циклом for, функцией range() и вложенными циклами. Нужно написать три программы: таблицу умножения, лестницу чисел и удаление повторяющихся символов из строки.

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

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

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

  1. Таблица умножения. Напишите программу, которая выводит таблицу умножения для чисел от 1 до n, где n — число, которое введёт пользователь. Оформите вывод так, чтобы столбцы были ровные (число ровно под числом).
    Введите число: 5
     1   2   3   4   5
     2   4   6   8  10
     3   6   9  12  15
     4   8  12  16  20
     5  10  15  20  25
  2. Лестница чисел. Напишите программу, которая принимает число n и выводит «лестницу» из чисел. Каждая строка лестницы содержит числа от 1 до номера строки.
    Введите число: 5
    1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5
  3. Удаление всех повторяющихся символов. Напишите программу, которая принимает строку и удаляет из неё все повторяющиеся символы, сохраняя только первые их вхождения.
    Введите строку: Python programming
    Результат: Python prgami

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

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

📁 Структура репозитория: мы используем один репозиторий для всех практических работ курса. Это удобнее, чем 46 отдельных репозиториев: общий .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

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

# Структура: lesson-XX/
mkdir -p lesson-16
cd lesson-16
4

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

# Windows (PowerShell / CMD)
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/16-for-loop

# Отправьте ветку на удалённый репозиторий (если настроен)
git push -u origin lesson/16-for-loop

Именование веток: lesson/XX-краткое-название. Это позволяет легко находить нужный урок.

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

Теперь, когда окружение готово, приступайте к решению.

1

Задание 1: таблица умножения

Создайте файл multiplication_table.py. Используйте два вложенных цикла for: внешний по строкам, внутренний по столбцам. Для ровных столбцов используйте форматирование через f-string.

n = int(input("Введите число: "))

for i in range(1, n + 1):
    for j in range(1, n + 1):
        print(f"{i * j:4}", end="")
    print()

Проверка в VS Code:

  1. Запустите: python multiplication_table.py.
  2. Введите 5 → таблица должна быть 5×5 с ровными столбцами.
  3. Введите 1 → должно вывестись 1.
  4. Введите 10 → таблица 10×10, числа выровнены.
2

Задание 2: лестница чисел

Создайте файл number_ladder.py. Внешний цикл отвечает за номер строки, внутренний — за числа от 1 до номера строки.

n = int(input("Введите число: "))

for i in range(1, n + 1):
    for j in range(1, i + 1):
        print(j, end=" ")
    print()

Проверка в VS Code:

  1. Запустите: python number_ladder.py.
  2. Введите 5 → пять строк, в i-й строке числа от 1 до i.
  3. Введите 1 → одна строка с числом 1.
  4. Введите 0 → ничего не выводится.
3

Задание 3: удаление повторяющихся символов

Создайте файл remove_duplicates.py. Создайте пустую строку-результат и добавляйте в неё символ, только если его там ещё нет.

text = input("Введите строку: ")
result = ""

for char in text:
    if char not in result:
        result += char

print(f"Результат: {result}")

Проверка в VS Code:

  1. Запустите: python remove_duplicates.py.
  2. Введите Python programming → ожидается Python prgami.
  3. Введите aaaa → ожидается a.
  4. Введите пустую строку → ожидается пустой результат.

✅ Полные решения

Ниже приведены полные решения всех трёх заданий. Совет: попробуйте выполнить самостоятельно, прежде чем смотреть ответ.

Задание 1: таблица умножения

📄 multiplication_table.py
n = int(input("Введите число: "))

for i in range(1, n + 1):
    for j in range(1, n + 1):
        print(f"{i * j:4}", end="")
    print()

Задание 2: лестница чисел

📄 number_ladder.py
n = int(input("Введите число: "))

for i in range(1, n + 1):
    for j in range(1, i + 1):
        print(j, end=" ")
    print()

Задание 3: удаление повторяющихся символов

📄 remove_duplicates.py
text = input("Введите строку: ")
result = ""

for char in text:
    if char not in result:
        result += char

print(f"Результат: {result}")

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

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

🐛 Отладка в VS Code

Если что-то не работает:

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

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

# Добавьте все файлы урока
git add lesson-16/

# Сделайте коммит с осмысленным сообщением
git commit -m "lesson-16: for loop, range, nested loops"

# Отправьте на GitHub / GitLab
git push

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

  • Убедитесь, что venv активирован перед запуском.
  • Не коммитьте папку venv/ — она указана в .gitignore.
  • Для таблицы умножения используйте ширину формата с запасом, например {i * j:4}, чтобы столбцы были ровными.
  • Помните, что range(a, b) не включает b; поэтому для чисел от 1 до n используйте range(1, n + 1).
  • В задаче на удаление повторов строка в Python неизменяема, поэтому конкатенация создаёт новую строку. Для учебных задач это нормально; в больших объёмах данных лучше использовать множество.