Модуль 1 · Урок 4 із 58
CLI: введення, виведення й перша діагностика
Навіть маленька програма має контракт: який input приймає, як перетворює його на внутрішні значення, що виводить і як користувач відрізнить успіх від помилки. Починаємо з прозорої утиліти без прихованої магії.
input() завжди повертає текст
name = input("Ваше ім’я: ").strip()
hours_text = input("Годин практики: ").strip()
hours = float(hours_text)sessions = 4
hours_per_session = hours / sessions
print(f"{name}, план: {sessions} сесії по {hours_per_session:.1f} год.")strip() прибирає крайові пробіли, але не перевіряє зміст. float() може підняти ValueError; системна обробка помилок буде в модулі 5. У першій версії чесно зафіксуйте accepted input і negative cases.
CLI-контракт до коду
| Частина | Контракт | Приклад |
|---|---|---|
| Input | Формат, одиниці, допустимий діапазон | Години на тиждень, десяткове число 0–40 |
| Transform | Явні формули й округлення | hours / sessions, display до 1 знака |
| Output | Зрозумілий підпис і одиниці | «4 сесії по 1.5 год» |
| Failure | Що буде для empty/text/out-of-range | На цій ітерації documented limitation |
Чотири різні види помилок
Debug loop без хаотичних правок
- Reproduce: одна команда й один input мають повторити проблему.
- Reduce: залиште найменший файл, який ще падає.
- Observe: traceback, фактичні values, types, executable і cwd.
- Hypothesis: одна перевірювана причина, а не список випадкових змін.
- Fix and rerun: змініть одне, повторіть той самий case і negative cases.
Практика: планувальник навчання
Definition of Done
- Приймає ім’я, години на тиждень і кількість навчальних днів.
- Явно перетворює числовий input.
- Виводить сесій на тиждень, години на сесію та одиниці.
- README містить точну команду запуску, приклад input/output і три known limitations.
- У репозиторії немає
.venv, secrets або персональних даних.
Використайте starter pack, але змініть код самостійно. Результат модуля — відтворюваний запуск і короткий environment report, а не лише скриншот.
Офіційні джерела
Модуль 1 завершено
Після практичного тесту прогрес збережеться. Наступний модуль додасть типи даних, comparisons, boolean logic, if та loops; фінальний іспит лишається заблокованим до 58/58 уроків і чотирьох прийнятих проєктів.
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.