Модуль 1 · Урок 4 із 58

CLI: введення, виведення й перша діагностика

Навіть маленька програма має контракт: який input приймає, як перетворює його на внутрішні значення, що виводить і як користувач відрізнить успіх від помилки. Починаємо з прозорої утиліти без прихованої магії.

input()str → numberf-stringDebug loop

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

Чотири різні види помилок

SyntaxКод не можна розібрати; шукайте файл, рядок і знак.
NameІм’я не визначене або написане іншим регістром.
Type/ValueОперація або перетворення не відповідає фактичному значенню.
LogicПрограма завершується, але результат не відповідає expected.
EnvironmentЗапущено не той interpreter, cwd або package set.
InterfaceРезультат математично правильний, але без одиниць чи зрозумілого повідомлення.

Debug loop без хаотичних правок

  1. Reproduce: одна команда й один input мають повторити проблему.
  2. Reduce: залиште найменший файл, який ще падає.
  3. Observe: traceback, фактичні values, types, executable і cwd.
  4. Hypothesis: одна перевірювана причина, а не список випадкових змін.
  5. 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 уроків і чотирьох прийнятих проєктів.

Практична перевірка · урок 4 з 47

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Який тип повертає input()?
2. Що робить strip() у прикладі CLI?
3. Що може статися для float('abc')?