Українська
Практика
Приклад 1. Площа кімнати
Створити проєкт room у PyCharm із середовищем Project venv. Для кімнати шириною 3,5 м і довжиною 4,2 м обчислити площу підлоги та довжину плінтуса без урахування дверей. Дані задаються в програмі. Зберегти першу робочу версію в локальному Git. Цей приклад не потребує зовнішніх пакетів.
py
"""Площа підлоги та периметр кімнати."""
def main():
width = 3.5
length = 4.2
area = width * length
perimeter = 2 * (width + length)
print(f"Площа підлоги: {area:.2f} м²")
print(f"Довжина плінтуса: {perimeter:.2f} м")
if __name__ == "__main__":
main()Результат:
Площа підлоги: 14.70 м²
Довжина плінтуса: 15.40 мДесятковий роздільник у коді – крапка. Формат .2f залишає два знаки після крапки й не залежить від української розкладки клавіатури. Це відрізняється від форматування чисел за локаллю в деяких інших мовах. Змініть ширину на 5 м, запустіть знову й перевірте очікувані 21,00 м² та 18,40 м.
У каталозі проєкту створіть .gitignore за зразком теорії. Виконайте git init -b main, задайте локальні ім’я та адресу автора. Далі:
powershell
git add main.py .gitignore
git commit -m "Calculate room area and perimeter"
git statusПовідомлення має описувати внесену зміну. Після коміту git status не повинен пропонувати додати .venv. Якщо ви змінювали ширину для перевірки, поверніть навчальні дані або зафіксуйте зміну окремим обґрунтованим комітом.
Приклад 2. Сьогоднішня дата та залежність humanize
Створити окремий проєкт calendar_demo. Програма має показати поточну дату, дату через сім днів і тривалість семиденного проміжку словами. Для перевірки передбачити необов’язкову дату YYYY-MM-DD в аргументах. Поточна дата змінюється, тому контрольний запуск має фіксований аргумент 2026-09-16.
У терміналі нового каталогу виконайте:
powershell
py -V:3.14 -m venv .venv
.\.venv\Scripts\python.exe -m pip install humanize
.\.venv\Scripts\python.exe -m pip freeze > requirements.txtУ PyCharm виберіть цей інтерпретатор через Settings → Python → Interpreter. Пакет humanize перетворює величини на текстові представлення: https://humanize.readthedocs.io/en/stable/. Тут його стандартні англомовні слова залишено для передбачуваного результату перевірки.
py
"""Дата та тривалість; аргумент задає контрольний день."""
from datetime import date, timedelta
import sys
import humanize
def main():
today = date.today()
if len(sys.argv) > 1:
today = date.fromisoformat(sys.argv[1])
week = timedelta(days=7)
print("Дата:", today.isoformat())
print("Через тиждень:", (today + week).isoformat())
print("Тривалість:", humanize.precisedelta(week))
if __name__ == "__main__":
main()Запуск .\.venv\Scripts\python.exe main.py 2026-09-16 дає:
Дата: 2026-09-16
Через тиждень: 2026-09-23
Тривалість: 7 daysБез аргументів буде використано системну дату. Якщо передати 16.09.2026, fromisoformat повідомить ValueError: потрібен саме ISO-формат. Повну обробку помилок вивчатимемо окремо; тут важливо правильно знайти причину у traceback. Перевірте перехід через кінець місяця, наприклад 2026-01-28.
Створіть поруч чисте середовище .check, установіть пакети командою .\.check\Scripts\python.exe -m pip install -r requirements.txt і повторіть запуск. .check/ також додайте до .gitignore. До коміту включіть main.py, requirements.txt і README; не включайте каталоги середовищ. Це перевіряє, що програма не залежить від випадково встановленого глобального пакета.
Приклад 3. Конвертер відстаней у проєкті uv
Створити проєкт distance, який приймає одну відстань у кілометрах із командного рядка, перевіряє додатність і скінченність числа та виводить метри й милі. Один міжнародний сухопутний mile дорівнює 1609,344 м. Параметр --help має пояснювати запуск; некоректне значення – завершувати програму з ненульовим кодом. Це зразок для завдань високого рівня.
powershell
uv init --python 3.14 distance
cd distance
uv add richЗамініть згенерований main.py таким кодом:
py
"""Перетворення кілометрів у метри та милі."""
import argparse
import math
from rich.console import Console
def main():
parser = argparse.ArgumentParser(description="km -> m, mi")
parser.add_argument("km", type=float, help="distance in km")
args = parser.parse_args()
if not math.isfinite(args.km) or args.km <= 0:
parser.error("km must be finite and positive")
console = Console(color_system=None)
console.print(f"Метри: {args.km * 1000:.2f}")
console.print(f"Милі: {args.km / 1.609344:.3f}")
if __name__ == "__main__":
main()Для uv run main.py 5 результат:
Метри: 5000.00
Милі: 3.107argparse належить стандартній бібліотеці. Він перетворює аргумент на число, створює довідку і друкує помилки в потік помилок; parser.error завершує процес із кодом 2. Перевірка isfinite відхиляє також nan та inf, які float може прийняти. У наступних темах ці конструкції розбиратимуться детально; для першої роботи можна адаптувати зразок.
Перевірте uv run main.py --help, запуск без аргументу, зі значеннями abc, 0, -5, nan. Вони не повинні друкувати правдоподібний результат перетворення. Для правильних даних перевірте одиниці, а не тільки цифри.
Збережіть main.py, pyproject.toml, uv.lock, .python-version, .gitignore та README у Git. Зробіть окремі змістовні коміти для обчислень, перевірки аргументів та інструкції відтворення. У чистій копії каталогу команда uv sync --locked повинна підготувати залежності для повторного запуску. Надсилання на GitHub із PyCharm є необов’язковим додатковим кроком.