Міні-курс «Python з нуля» · Практика

Лабораторна робота №1 з Python: покроковий розбір і звіт

Практична частина курсу. Беремо лабораторну «Знайомство з Python. Основи алгоритмізації» і проходимо обидва завдання на власних прикладах: від умови до блок-схеми, коду, перевірки й звіту. Свій варіант ви виконаєте за тим самим алгоритмом.

Крок 4 з 4·Авторка: Марина Мальцева·10 хв читання
Лабораторна робота №1 з Python — практика міні-курсу «Python з нуля»

Завдання і що здавати

Завдання: лабораторна робота №1 «Знайомство з Python. Основи алгоритмізації»Методичні вказівки: теорія, приклади, варіанти завдань 1 і 2 · Word, 234 КБЗавантажити завдання

Мета роботи — вивчити основні поняття алгоритмізації й типи алгоритмів за структурою, навчитися складати алгоритм розв’язку задачі, ознайомитися з інтерпретатором Python і виконувати в ньому математичні обчислення. Практична частина складається з двох завдань:

  • Завдання 1. За своїм варіантом (таблиця 1.2 методички: площа, знижка, температура, середній бал тощо) розробити алгоритм, подати його блок-схемою і виконати обчислення в інтерактивному режимі Python.
  • Завдання 2. Обчислити математичний вираз зі змінними a і b за варіантом із таблиці 1.3; номер варіанта визначається за списком групи.
У методичці також є вправи в інтерактивному режимі: п’ять довільних команд, п’ять команд із модулем math, програма в IDLE і гіпотенуза двома способами. Усе це розібрано в уроці 2 і уроці 3.

Підготовка: п’ять хвилин

  • Перевірте, що Python встановлено: python --version (інструкція — в уроці 2).
  • Відкрийте REPL — командою python у терміналі або через IDLE. У ньому виконуються обчислення завдання 1.
  • Вирішіть, де малювати блок-схеми: аркуш у клітинку, diagrams.net (draw.io) або інший редактор діаграм. Вимоги до оформлення уточніть у викладача.
  • Створіть документ звіту одразу й додавайте туди код і результати по ходу роботи, а не наприкінці.

Завдання 1: від умови до результату

Покажемо метод на задачі, якої немає серед варіантів: обчисліть вартість поїздки на таксі, якщо посадка коштує 50 грн, а кожен кілометр — 18 грн. Робота завжди йде в чотири кроки.

Крок 1. Визначте дані

ДаніПозначенняПриклад
Вхіднівідстань, км — km12
Сталіпосадка — base, тариф за кілометр — rate50 і 18
Вихіднівартість, грн — costпотрібно знайти

Крок 2. Запишіть алгоритм словами

1) Задати вартість посадки й тариф. 2) Ввести відстань. 3) Помножити відстань на тариф і додати посадку. 4) Вивести вартість. Жодної умови й жодних повторень — отже, це лінійний алгоритм.

Крок 3. Намалюйте блок-схему

Кожен пункт словесного алгоритму стає блоком:

Блок-схема лінійного алгоритму: вартість поїздки на таксіПочатокbase = 50, rate = 18Ввести kmcost = base + rate * kmВивести costКінець
Блок-схема лінійного алгоритму: вартість поїздки

Крок 4. Обчисліть у REPL

Переносимо блоки в команди — по одній на рядок — і перевіряємо на двох наборах даних:

>>> base = 50
>>> rate = 18
>>> km = 12
>>> cost = base + rate * km
>>> cost
266
>>> km = 3.5
>>> cost = base + rate * km
>>> cost
113.0

Другий розрахунок — не зайвий: алгоритм має бути масовим, тож перевіряємо його на кількох наборах даних. Заодно видно, як тип результату залежить від вхідних: ціле число кілометрів дало int, дробове — float.

Самоперевірка: один приклад порахуйте вручну. 50 + 18 · 12 = 50 + 216 = 266 — збігається. Якщо розходиться, шукайте помилку в дужках або пріоритеті операцій.

Ваш варіант робиться так само. Усі задачі таблиці 1.2 лінійні: знайти формулу (площа, довжина кола, переведення температури), визначити вхідні дані, намалювати 4–6 блоків і порахувати в REPL на двох-трьох наборах чисел. Для задач із колом і кругом знадобиться math.pi.

Завдання 2: формула в Python

Вирази таблиці 1.3 записано математичною мовою: дроби, корені, модулі, степені функцій. Python такого запису не розуміє — формулу треба «розплющити» в один рядок. Словник перекладу:

МатематикаPythonПастка
sin³(a)math.sin(a) ** 3Степінь ставиться після дужок функції, а не після її назви
cos²(0,5a)math.cos(0.5 * a) ** 2Дробова частина — через крапку, множення — лише явне *
√(a² + b)math.sqrt(a ** 2 + b)Усе, що під коренем, — у дужках функції
|a − b|abs(a - b)abs — вбудована функція, без math.
eᵃmath.exp(a)Не math.e * a
ln(ab)math.log(a * b)math.log — натуральний; для lg — math.log10
2ab2 * a * b2ab — синтаксична помилка, а ab — ім’я іншої змінної
x / (y + z)x / (y + z)Без дужок поділиться лише на y
a ** 2a ^ 2 — не степінь

Розберемо метод на прикладі, якого теж немає серед варіантів:

Крок 1. Розбийте на частини

Будь-який дріб — це чисельник, знаменник і ділення між ними. Порахувавши їх окремо, ви не заплутаєтеся в дужках і зможете перевірити кожну частину:

import math

a = float(input("a = "))
b = float(input("b = "))

numerator = math.sin(a) ** 2 + math.sqrt(abs(a - b))
denominator = math.exp(b) + math.log(a * b)
y = numerator / denominator

print("y =", y)

Крок 2. Порахуйте на кількох парах значень

aby
120.21133759684169034
2.50.50.9468538800436446
330.000893733780453952

Для звіту зазвичай вистачає 3–4 знаків після коми: print("y =", round(y, 4)) виведе y = 0.2113.

Крок 3. Звірте з однорядковим записом

Той самий вираз, записаний одним рядком, має дати те саме число — так ловляться помилки в дужках. Запис a, b = 1, 2 присвоює два значення одразу:

>>> a, b = 1, 2
>>> (math.sin(a)**2 + math.sqrt(abs(a-b))) / (math.exp(b) + math.log(a*b))
0.21133759684169034

Перевірка ОДЗ і тестування

Вираз має сенс не для всіх a і b. Перш ніж вибирати тестові значення, випишіть обмеження — область допустимих значень (ОДЗ):

Що є у виразіОбмеженняЩо буде, якщо порушити
√xx ≥ 0ValueError
ln x, lg xx > 0ValueError
Дрібзнаменник ≠ 0ZeroDivisionError
sin x, cos xобмежень немає, але x — у радіанахПомилки не буде, але число може бути не тим, яке ви очікуєте

Для нашого прикладу: під коренем стоїть модуль — він невід’ємний завжди. Логарифм вимагає a · b > 0, тобто a і b одного знака й не нулі. Знаменник eᵇ + ln(ab) дорівнює нулю, коли ln(ab) = −eᵇ, — таке можливо при дуже малих додатних ab, тож ці значення в тестах краще обійти.

Порушіть ОДЗ навмисно — це хороший тест розуміння:

>>> a, b = -1, 2
>>> math.log(a * b)
Traceback (most recent call last):
  ...
ValueError: math domain error

(У Python 3.14 повідомлення детальніше — expected a positive input, суть та сама.) У звіті корисно показати і правильний запуск, і реакцію на недопустимі дані: це демонструє, що ви розумієте межі формули.

Бонус для сильного звіту — вбудувати перевірку ОДЗ у програму. Це вже розгалужений алгоритм із першого уроку:

if a * b <= 0:
    print("ln(ab) не визначений: a і b мають бути одного знака й не нулі")
else:
    denominator = math.exp(b) + math.log(a * b)
    if abs(denominator) < 1e-12:   # дробові значення порівнюємо з допуском
        print("Знаменник дорівнює нулю")
    else:
        y = (math.sin(a) ** 2 + math.sqrt(abs(a - b))) / denominator
        print("y =", round(y, 4))

Звіт: структура і чекліст

За вимогами методички звіт містить чотири частини:

  1. Тема роботи — «Знайомство з Python. Основи алгоритмізації».
  2. Мета роботи — з методички.
  3. Результати виконання завдань — код програми й результати її роботи для різних вхідних даних; для завдання 1 — також блок-схема.
  4. Висновки — що вдалося з’ясувати під час роботи (про ОДЗ, радіани, порівняння sqrt і hypot), а не переказ мети.

Перед здачею пройдіться чеклістом:

  • Номер варіанта вказано для обох завдань.
  • Блок-схема починається «Початком» і закінчується «Кінцем», з кожного ромба виходять «так» і «ні».
  • Код запускається без помилок у чистому файлі — перевірте, скопіювавши його з документа звіту.
  • Для кожного завдання є щонайменше два-три набори вхідних даних.
  • Обмеження ОДЗ згадано і, бажано, продемонстровано.
  • Висновки говорять про результати, а не повторюють мету.

Контрольні запитання

На захисті зазвичай питають за списком із методички. Де шукати відповідь:

ЗапитанняДе відповідь
Що таке алгоритм? Основні властивостіУрок 1: що таке алгоритм, сім властивостей
Основні типи структур; лінійний, розгалужений і циклічний алгоритм — з прикладамиУрок 1: три структури
Способи запису алгоритмівУрок 1: способи запису
Що таке блок-схема і які в неї базові блокиУрок 1: блоки блок-схем
Компільовані й інтерпретовані мови; до яких належить PythonУрок 2: компілятор і інтерпретатор
Що таке змінна; як записати й вивести значення; як позначається присвоєнняУрок 3: змінні
Арифметичні оператори PythonУрок 3: сім операторів
Використання Python в інтерактивному режиміУрок 2: REPL
Найкраща підготовка до захисту — пояснити свою блок-схему вголос і відповісти, що станеться з програмою, якщо ввести нуль або від’ємне число.

Міні-курс Python з нуля

Усі матеріали курсу по порядку. Програма, завдання лабораторної та інформація про авторку — на головній сторінці курсу.

  1. Урок 1 · 9 хвАлгоритм і блок-схемиВластивості алгоритму, способи запису, базові блоки й три структури — лінійна, розгалужена, циклічна — з кодом Python.
  2. Урок 2 · 8 хвЯк Python виконує кодКомпілятор проти інтерпретатора, байткод, встановлення Python 3.12+, REPL, «Дзен Python» і перша програма в IDLE.
  3. Урок 3 · 9 хвPython як калькуляторСім арифметичних операторів і пріоритети, модуль math, змінні, типи даних і перетворення введення.
  4. Практика · 10 хв · ви тутЛабораторна робота №1 покроковоОбидва завдання на прикладах, переклад формул у Python, перевірка ОДЗ, чекліст звіту й контрольні запитання.

Часті питання

Методичка вимагає подати алгоритм блок-схемою, але не вказує, чим її малювати, — тож уточніть у викладача. Якщо обмежень немає, зручно використати diagrams.net (draw.io): схему легко виправити й вставити у звіт.

Аргумент кореня чи логарифма вийшов за область визначення: під коренем від’ємне число або логарифм від нуля чи від’ємного числа. Перевірте ОДЗ і виберіть інші a та b.

Найчастіше калькулятор рахує тригонометрію в градусах, а Python — у радіанах: перевірте режим RAD. Розбіжність в останніх знаках — це наближеність дробових чисел; для звіту округліть результат функцією round.

Методичка кількість знаків не регламентує; зазвичай достатньо 3–4. Округлюйте лише для виводу — round(y, 4), а в обчисленнях використовуйте повне значення.

Курс пройдено — що далі?

Умови, цикли й функції системно розбирає безкоштовний трек Python Developer Professional в Академії SEOWORK.

Сподобалось? Поділіться — це найкраща підтримка

Розбори кіберзагроз від SEOWORK

Одна практична стаття на тиждень — як не купитися на фішинг, захистити акаунти й дані. У подарунок одразу памʼятка у PDF.