Дайте відповіді на запитання
1. Який вигляд має команда повного розгалуження з використанням логічних виразів? Як вона виконується?
Команда повного розгалуження в Python виглядає так :
if <логічний вираз>:
<послідовність команд 1>
else:
<послідовність команд 2>
Вона виконується наступним чином: спочатку визначається значення логічного виразу. Якщо це значення True, то виконується <послідовність команд 1>, а якщо False — виконується <послідовність команд 2>.
2. Який вигляд має команда неповного розгалуження з використанням логічних виразів? Як вона виконується?
Команда неповного розгалуження має такий вигляд :
if <логічний вираз>:
<послідовність команд>
Під час її виконання спершу визначається значення логічного виразу. Якщо воно True, то виконується <послідовність команд>. Якщо ж значення False, то ця послідовність команд пропускається, і програма одразу переходить до наступної команди після розгалуження.
3. Який вигляд має команда багатоальтернативного розгалуження з використанням логічних виразів? Як вона виконується?
Команда багатоальтернативного розгалуження виглядає так :
if <логічний вираз 1>:
<послідовність команд 1>
elif <логічний вираз 2>:
<послідовність команд 2>
...
else:
<послідовність команд N>
Виконується вона так: послідовно перевіряються логічні вирази. Якщо значення першого виразу True, виконується <послідовність команд 1>, і на цьому перевірка закінчується. Якщо ж воно False, перевіряється другий вираз, і так далі. Якщо жоден з логічних виразів не є істинним (True), то виконується <послідовність команд N> після else.
4. У яких випадках в алгоритмах потрібно використовувати повне розгалуження, а у яких – неповне?
Повне розгалуження використовується, коли потрібно виконати одну з двох різних дій залежно від умови (наприклад, якщо знаменник не нуль, то обчислити вираз, а якщо нуль — вивести повідомлення про помилку). Неповне розгалуження потрібне тоді, коли певну дію слід виконати тільки за умови істинності виразу, а в іншому випадку нічого робити не треба.
5. Як потрібно підбирати тестові набори значень вхідних даних для тестування проєкту з розгалуженням?
Для тестування проєкту з розгалуженням потрібно підбирати такі набори вхідних даних, щоб перевірити правильність роботи програми для всіх можливих варіантів виконання. Наприклад, якщо умова перевіряє, чи дорівнює знаменник нулю, то треба перевірити випадки, коли він дорівнює нулю, і коли не дорівнює.
Обговоріть і зробіть висновки
1. Чи можна команду багатоальтернативного розгалуження замінити на інші команди розгалуження? Якщо так, наведіть приклади.
Так, команду багатоальтернативного розгалуження можна замінити, використовуючи вкладені конструкції повного (if-else) або неповного (if) розгалуження. Хоча це робить код менш читабельним і довшим.
Приклад:
Ось як виглядає команда багатоальтернативного розгалуження:
if x > 0:
print("Число додатне")
elif x < 0:
print("Число від'ємне")
else:
print("Число дорівнює нулю")
А ось як її можна замінити, використовуючи вкладені повні розгалуження:
if x > 0:
print("Число додатне")
else:
if x < 0:
print("Число від'ємне")
else:
print("Число дорівнює нулю")
Результат виконання обох фрагментів коду буде однаковим.
Виконайте завдання
1. Складіть блок-схему і поясніть виконання фрагмента проєкту:
if <логічний вираз>: <команди 1> else: if <логічний вираз 2>: <команди 2> else: <команди 3>
│
▼
╱───────╲
╱ Логічний ╲
│ вираз 1? │
╲ ╱
╲───┬───╱
│
┌────────┼────────┐
│Так Ні│
▼ ▼
┌─────────┐ ╱───────╲
│Команди 1│ ╱ Логічний ╲
└─────────┘ │ вираз 2? │
╲ ╱
╲───┬───╱
│
┌────────┼────────┐
│Так Ні│
▼ ▼
┌─────────┐ ┌─────────┐
│Команди 2│ │Команди 3│
└─────────┘ └─────────┘
2. Складіть блок-схему і поясніть виконання фрагмента проєкту:
if <логічний вираз>: <команди 1> if <логічний вираз 2>: <команди 2> Поясніть, чим цей фрагмент проєкту відрізняється від фрагмента проєкту в завданні № 1 і чим відрізняються їх виконання
│
▼
╱───────╲
╱ Логічний ╲
│ вираз 1? │
╲ ╱
╲───┬───╱
│
┌────────┼─────────┐
│Так Ні│
▼ │
┌─────────┐ │
│Команди 1│ │
└────┬────┘ │
│ │
└────────┬─────────┘
│
▼
╱───────╲
╱ Логічний ╲
│ вираз 2? │
╲ ╱
╲───┬───╱
│
┌────────┼─────────┐
│Так Ні│
▼ │
┌─────────┐ │
│Команди 2│ │
└────┬────┘ │
│ │
└────────┬─────────┘
У завданні № 1 умови утворюють єдину розгалужену структуру з вибором одного варіанта, а в завданні № 2 — це два незалежні послідовні розгалуження, кожне з яких перевіряється окремо.
3. f – змінна логічного типу. Чи можна розгалуження if f == True: <Команда> замінити розгалуженням if f: <Команда>? Відповідь поясніть.
Так, можна. Команда if перевіряє, чи є вираз після неї істинним (True). Якщо змінна f вже має логічний тип і дорівнює True, то сама змінна f вже є істинним виразом. Порівняння f == True в такому випадку є надлишковим, хоча й правильним. Короткий запис if f: робить те ж саме — перевіряє, чи дорівнює f значенню True.
В НАСТУПНИХ ЗАДАЧАХ БЕЗ TINKER, АЛЕ ПІСЛЯ НИХ ДИВІТЬ З TINKER!
4. Створіть математичну модель і проєкт для обчислення значення виразу (a + b) – c : (a – b).
Математична модель:
- Вхідні дані: Три дійсні числа
a, b, c. - Вихідні дані: Результат
y = (a + b) – c / (a – b)або повідомлення про неможливість обчислення. - Обмеження: Знаменник дробу
(a – b)не може дорівнювати нулю. - Алгоритм:
- Ввести значення
a, b, c. - Якщо
a - bдорівнює0, вивести повідомлення “Ділення на нуль!”. - Інакше обчислити
y = (a + b) - c / (a - b)і вивести результатy.
- Ввести значення
Проєкт (код мовою Python):
a = float(input("Введіть a: "))
b = float(input("Введіть b: "))
c = float(input("Введіть c: "))
if a - b == 0:
print("Ділення на нуль!")
else:
y = (a + b) - c / (a - b)
print("Результат y =", y)
Тестові набори:
a = 10, b = 5, c = 2(знаменник не 0). Результат:y = 14.6.a = 5, b = 5, c = 2(знаменник 0). Результат:Ділення на нуль!.
5. Створіть математичну модель і проєкт для обчислення значення виразу a + (b – c) : (a + 2b).
Математична модель:
- Вхідні дані: Три дійсні числа
a, b, c. - Вихідні дані: Результат
y = a + (b – c) / (a + 2*b)або повідомлення про помилку. - Обмеження: Знаменник
(a + 2*b)не може дорівнювати нулю. - Алгоритм:
- Ввести значення
a, b, c. - Якщо
a + 2*bдорівнює0, вивести повідомлення “Помилка: ділення на нуль”. - В іншому випадку обчислити
y = a + (b - c) / (a + 2*b)і вивестиy.
- Ввести значення
Проєкт (код мовою Python):
a = float(input("Введіть a: "))
b = float(input("Введіть b: "))
c = float(input("Введіть c: "))
if a + 2 * b == 0:
print("Помилка: ділення на нуль")
else:
y = a + (b - c) / (a + 2 * b)
print("Результат y =", y)
Тестові набори:
a = 4, b = 1, c = 2. Результат:y = 3.83a = -4, b = 2, c = 5. Результат:Помилка: ділення на нуль.
6. Створіть математичну модель і проєкт, який визначає менше з двох довільних чисел або виводить повідомлення, що числа рівні.
Математична модель:
- Вхідні дані: Два числа
x, y. - Вихідні дані: Менше з чисел або повідомлення про їх рівність.
- Алгоритм:
- Ввести
xтаy. - Якщо
x < y, вивестиx. - Інакше, якщо
y < x, вивестиy. - В іншому випадку (якщо вони не менші одне за одного) вивести “Числа рівні”.
- Ввести
Проєкт (код мовою Python):
x = float(input("Введіть перше число: "))
y = float(input("Введіть друге число: "))
if x < y:
print("Менше число:", x)
elif y < x:
print("Менше число:", y)
else:
print("Числа рівні")
Тестові набори:
x = 15, y = 7. Результат:Менше число: 7.0.x = 3, y = 20. Результат:Менше число: 3.0.x = 9, y = 9. Результат:Числа рівні.
! Задачі з tinker двіться нижче !
7. Створіть математичну модель і проєкт, який визначає найменше з чотирьох довільних чисел.
Математична модель:
- Вхідні дані: Чотири числа
n1, n2, n3, n4. - Вихідні дані: Найменше з цих чотирьох чисел.
- Алгоритм:
- Ввести чотири числа.
- Припустити, що перше число
n1є найменшим і зберегти його у зміннуmin_val. - Порівняти
n2зmin_val. Якщоn2менше, то оновитиmin_valзначеннямn2. - Порівняти
n3зmin_val. Якщоn3менше, оновитиmin_valзначеннямn3. - Порівняти
n4зmin_val. Якщоn4менше, оновитиmin_valзначеннямn4. - Вивести значення
min_val.
Проєкт (код мовою Python):
n1 = float(input("Введіть перше число: "))
n2 = float(input("Введіть друге число: "))
n3 = float(input("Введіть третє число: "))
n4 = float(input("Введіть четверте число: "))
min_val = n1
if n2 < min_val:
min_val = n2
if n3 < min_val:
min_val = n3
if n4 < min_val:
min_val = n4
print("Найменше число:", min_val)
Тестові набори:
1, 2, 3, 4. Результат:1.0.5, 2, 8, 3. Результат:2.0.10, 20, 5, 30. Результат:5.0.9, 9, 9, 9. Результат:9.0.
8. Створіть математичну модель і проєкт, який обчислює модуль довільного числа.
Математична модель:
- Вхідні дані: довільне число $x$.
- Вихідні дані: модуль числа $x$, тобто $|x|$.
- Алгоритм:
- Ввести число $x$.
- Якщо $x < 0$, то модуль дорівнює $-x$.
- В іншому випадку (якщо $x \ge 0$), модуль дорівнює $x$.
- Вивести результат.
Проєкт (код мовою Python):
# Вводимо число з клавіатури
x = float(input("Введіть число: "))
# Обчислюємо модуль
if x < 0:
module = -x
else:
module = x
# Виводимо результат
print("Модуль числа", x, "дорівнює", module)
Значення вхідних даних для тестування:
- Вхід: 25. Очікуваний результат: 25.
- Вхід: -10. Очікуваний результат: 10.
- Вхід: 0. Очікуваний результат: 0.
9. Створіть проєкт, у якому у вікні розміщується кнопка завширшки 40 символів. Після кожного вибору кнопки її ширина зменшується на 5 символів. А коли ширина кнопки стає менше, ніж 10 символів, її ширина знову стає 40 символів.
from tkinter import *
# Початкова ширина кнопки
current_width = 40
def change_width():
"""Функція для зміни ширини кнопки"""
global current_width # Оголошуємо, що будемо змінювати глобальну змінну
#Зменшуємо ширину на 5
current_width -= 5
# Якщо ширина стала меншою за 10, повертаємо її до 40
if current_width < 10:
current_width = 40
# Застосовуємо нову ширину до кнопки
button.config(width=current_width)
# Створюємо головне вікно
root = Tk()
root.title("Зміна ширини кнопки")
root.geometry("400x150")
button = Button(root, text="Натисни мене!", width=current_width, command=change_width)
button.pack(pady=40)
root.mainloop()
10. Створіть математичну модель і проєкт для обчислення значення функції y = {15 – 3x, якщо –1 < x < 4; 6 + 4x для всіх інших x}. Запишіть у зошит набори значень вхідних даних, для яких ви тестували цей проєкт.
Математична модель:
- Вхідні дані: дійсне число x.
- Вихідні дані: значення функції y.
- Алгоритм:
- Ввести значення x.
- Якщо x знаходиться в проміжку від -1 до 4 (не включаючи межі), то обчислити y за формулою y = 15 – 3x.
- Інакше (для всіх інших значень x) обчислити y за формулою y = 6 + 4x.
- Вивести отримане значення y.
Проєкт (код мовою Python):
x = float(input("Введіть значення x: "))
if x > -1 and x < 4:
y = 15 - 3 * x
else:
y = 6 + 4 * x
print("Значення функції y =", y)
Набори значень для тестування:
x = 2(умова істинна). Результат:y = 9.x = -1(умова хибна, граничне значення). Результат:y = 2.x = 4(умова хибна, граничне значення). Результат:y = 22.x = 10(умова хибна). Результат:y = 46.
11. Створіть математичну модель і проєкт для обчислення значення функції y = {2x – 4, якщо x < 2; x² + 5, якщо 2 ≤ x ≤ 7; 3 – 5x, якщо x > 7}. Запишіть у зошит набори значень вхідних даних, для яких ви тестували цей проєкт.
Математична модель:
- Вхідні дані: дійсне число $x$.
- Вихідні дані: значення функції $y$.
- Алгоритм:
- Ввести значення $x$.
- Якщо $x < 2$, обчислити $y = 2x – 4$.
- Інакше, якщо $x$ знаходиться в проміжку від 2 до 7 включно, обчислити $y = x^2 + 5$.
- Інакше (якщо $x > 7$), обчислити $y = 3 – 5x$.
- Вивести результат.
Проєкт (код мовою Python):
x = float(input("Введіть значення x: "))
if x < 2:
y = 2 * x - 4
elif 2 <= x <= 7:
y = x**2 + 5
else:
y = 3 - 5 * x
print("Значення функції y =", y)
Набори значень для тестування:
x = 1(перша умова). Результат:y = -2.x = 5(друга умова). Результат:y = 30.x = 2(граничне значення для другої умови). Результат:y = 9.x = 7(граничне значення для другої умови). Результат:y = 54.x = 8(третя умова). Результат:y = -37.
12. Створіть математичну модель і проєкт для обчислення значення функції y = {2x – 4, якщо x < 2; x² + 5, якщо 5 ≤ x ≤ 12; 3 – 5x для всіх інших x}. Запишіть у зошит набори значень вхідних даних, для яких ви тестували цей проєкт.
Математична модель:
- Вхідні дані: дійсне число $x$.
- Вихідні дані: значення функції $y$.
- Алгоритм:
- Ввести значення $x$.
- Якщо $x < 2$, обчислити $y = 2x – 4$.
- Інакше, якщо $5 \le x \le 12$, обчислити $y = x^2 + 5$.
- В усіх інших випадках (тобто коли $2 \le x < 5$ або $x > 12$), обчислити $y = 3 – 5x$.
- Вивести отриманий результат $y$.
Проєкт (код мовою Python):
# Вводимо число з клавіатури
x = float(input("Введіть значення x: "))
# Перевіряємо умови і обчислюємо y
if x < 2:
y = 2 * x - 4
elif 5 <= x <= 12:
y = x**2 + 5
else:
y = 3 - 5 * x
# Виводимо результат
print("Значення функції y =", y)
Набори значень вхідних даних для тестування:
- x = 0 (перша умова, $x < 2$): $y = 2 \cdot 0 – 4 = -4$.
- x = 3 (третя умова, “інші”): $y = 3 – 5 \cdot 3 = -12$.
- x = 7 (друга умова, $5 \le x \le 12$): $y = 7^2 + 5 = 54$.
- x = 15 (третя умова, “інші”): $y = 3 – 5 \cdot 15 = -72$.
- x = 2 (граничне значення, потрапляє в “інші”): $y = 3 – 5 \cdot 2 = -7$.
- x = 5 (граничне значення, потрапляє в другу умову): $y = 5^2 + 5 = 30$.
- x = 12 (граничне значення, потрапляє в другу умову): $y = 12^2 + 5 = 149$.
13. Створіть математичну модель і проєкт для визначення, чи можна з трьох відрізків із заданими довжинами утворити трикутник.
Математична модель:
- Вхідні дані: три додатні числа $a, b, c$, що є довжинами відрізків.
- Вихідні дані: повідомлення про те, чи можна утворити трикутник.
- Умова (нерівність трикутника): трикутник можна утворити тоді і тільки тоді, коли сума довжин будь-яких двох його сторін більша за довжину третьої сторони.
- Алгоритм:
- Ввести довжини $a, b, c$.
- Перевірити, чи всі довжини додатні ($a > 0, b > 0, c > 0$).
- Якщо так, перевірити одночасне виконання трьох умов: $a + b > c$, $a + c > b$ та $b + c > a$.
- Якщо всі умови виконані, вивести повідомлення “З цих відрізків можна утворити трикутник”.
- В іншому випадку вивести “З цих відрізків трикутник утворити неможливо”.
Проєкт (код мовою Python):
a = float(input("Введіть довжину першого відрізка: "))
b = float(input("Введіть довжину другого відрізка: "))
c = float(input("Введіть довжину третього відрізка: "))
# Перевірка умов існування трикутника
if a > 0 and b > 0 and c > 0 and a + b > c and a + c > b and b + c > a:
print("З цих відрізків можна утворити трикутник.")
else:
print("З цих відрізків трикутник утворити неможливо.")
Набори значень для тестування:
- a=3, b=4, c=5: Можна утворити трикутник.
- a=1, b=2, c=3: Неможливо утворити трикутник (1+2 не більше 3).
- a=5, b=1, c=1: Неможливо утворити трикутник (1+1 не більше 5).
- a=7, b=7, c=7: Можна утворити трикутник.
14. Банк пропонує вкладнику два види депозитів: 15% прибутку за рік і 7% прибутку за пів року. В обох депозитах прибуток за вказаний час додається до вкладу. Створіть математичну модель і проєкт для порівняння прибутку за 1 рік по цих депозитах.
Математична модель:
- Вхідні дані: початкова сума вкладу $S$.
- Вихідні дані: порівняння кінцевих сум по двох депозитах за рік.
- Депозит 1 (річний):
- Ставка: 15% на рік.
- Кінцева сума через рік: $S_1 = S \cdot (1 + 0.15) = 1.15 \cdot S$.
- Депозит 2 (піврічний з капіталізацією):
- Ставка: 7% за пів року.
- Сума через 6 місяців: $S_{пів} = S \cdot (1 + 0.07)$.
- Кінцева сума через рік (нараховані відсотки додаються до вкладу і на них теж нараховується прибуток): $S_2 = S_{пів} \cdot (1 + 0.07) = S \cdot (1.07) \cdot (1.07) = S \cdot (1.07)^2 = 1.1449 \cdot S$.
Алгоритм:
- Ввести суму вкладу $S$.
- Обчислити кінцеві суми $S_1$ та $S_2$.
- Порівняти $S_1$ та $S_2$ і вивести, який депозит вигідніший.
Проєкт (код мовою Python):
# Вводимо початкову суму
initial_sum = float(input("Введіть суму вкладу: "))
# Розрахунок для першого депозиту (15% річних)
final_sum1 = initial_sum * 1.15
# Розрахунок для другого депозиту (7% за пів року з капіталізацією)
final_sum2 = initial_sum * (1.07)**2
print(f"Сума через рік по депозиту 15% річних: {final_sum1:.2f}")
print(f"Сума через рік по депозиту 7% за пів року: {final_sum2:.2f}")
# Порівняння результатів
if final_sum1 > final_sum2:
print("Депозит під 15% річних є вигіднішим.")
elif final_sum2 > final_sum1:
print("Депозит під 7% за пів року є вигіднішим.")
else:
print("Обидва депозити однаково вигідні.")
Набори значень для тестування:
Сума = 1000:
- Депозит 1: 1150.00
- Депозит 2: 1144.90
- Висновок: Депозит під 15% річних вигідніший.
Сума = 5000:
- Депозит 1: 5750.00
- Депозит 2: 5724.50
- Висновок: Депозит під 15% річних вигідніший.
Тут усі задачі з tinker
4. Проєкт для обчислення значення виразу (a + b) – c : (a – b)
import tkinter as tk
from tkinter import messagebox
def calculate():
"""Обчислює вираз і виводить результат або помилку."""
try:
a = float(entry_a.get())
b = float(entry_b.get())
c = float(entry_c.get())
if a - b == 0:
# Використовуємо messagebox для показу помилки
messagebox.showerror("Помилка", "Ділення на нуль!")
else:
y = (a + b) - c / (a - b)
# Оновлюємо текст у мітці результату
result_label.config(text=f"Результат y = {y:.2f}")
except ValueError:
# Помилка, якщо введено не число
messagebox.showerror("Помилка", "Будь ласка, введіть дійсні числа.")
# Створення головного вікна
root = tk.Tk()
root.title("Обчислення виразу 1")
root.geometry("300x150")
# Створення та розміщення елементів
tk.Label(root, text="Введіть a:").grid(row=0, column=0, padx=10, pady=5)
entry_a = tk.Entry(root)
entry_a.grid(row=0, column=1, padx=10, pady=5)
tk.Label(root, text="Введіть b:").grid(row=1, column=0, padx=10, pady=5)
entry_b = tk.Entry(root)
entry_b.grid(row=1, column=1, padx=10, pady=5)
tk.Label(root, text="Введіть c:").grid(row=2, column=0, padx=10, pady=5)
entry_c = tk.Entry(root)
entry_c.grid(row=2, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити", command=calculate)
calc_button.grid(row=3, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат y = ")
result_label.grid(row=4, columnspan=2)
# Запуск головного циклу
root.mainloop()
5. Проєкт для обчислення значення виразу a + (b – c) : (a + 2b)
import tkinter as tk
from tkinter import messagebox
def calculate():
"""Обчислює вираз і виводить результат або помилку."""
try:
a = float(entry_a.get())
b = float(entry_b.get())
c = float(entry_c.get())
if a + 2 * b == 0:
messagebox.showerror("Помилка", "Помилка: ділення на нуль")
else:
y = a + (b - c) / (a + 2 * b)
result_label.config(text=f"Результат y = {y:.2f}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсні числа.")
# Створення головного вікна
root = tk.Tk()
root.title("Обчислення виразу 2")
root.geometry("300x150")
# Створення та розміщення елементів
tk.Label(root, text="Введіть a:").grid(row=0, column=0, padx=10, pady=5)
entry_a = tk.Entry(root)
entry_a.grid(row=0, column=1, padx=10, pady=5)
tk.Label(root, text="Введіть b:").grid(row=1, column=0, padx=10, pady=5)
entry_b = tk.Entry(root)
entry_b.grid(row=1, column=1, padx=10, pady=5)
tk.Label(root, text="Введіть c:").grid(row=2, column=0, padx=10, pady=5)
entry_c = tk.Entry(root)
entry_c.grid(row=2, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити", command=calculate)
calc_button.grid(row=3, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат y = ")
result_label.grid(row=4, columnspan=2)
root.mainloop()
6. Проєкт, який визначає менше з двох довільних чисел
import tkinter as tk
from tkinter import messagebox
def find_smaller():
"""Знаходить менше з двох чисел."""
try:
x = float(entry_x.get())
y = float(entry_y.get())
if x < y:
result = f"Менше число: {x}"
elif y < x:
result = f"Менше число: {y}"
else:
result = "Числа рівні"
result_label.config(text=result)
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсні числа.")
# Створення головного вікна
root = tk.Tk()
root.title("Менше з двох чисел")
root.geometry("300x120")
# Створення та розміщення елементів
tk.Label(root, text="Введіть перше число:").grid(row=0, column=0, padx=10, pady=5)
entry_x = tk.Entry(root)
entry_x.grid(row=0, column=1, padx=10, pady=5)
tk.Label(root, text="Введіть друге число:").grid(row=1, column=0, padx=10, pady=5)
entry_y = tk.Entry(root)
entry_y.grid(row=1, column=1, padx=10, pady=5)
find_button = tk.Button(root, text="Знайти менше", command=find_smaller)
find_button.grid(row=2, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=3, columnspan=2)
root.mainloop()
7. Проєкт, який визначає найменше з чотирьох довільних чисел
import tkinter as tk
from tkinter import messagebox
def find_smallest():
"""Знаходить найменше з чотирьох чисел."""
try:
*# Збираємо числа в список*
numbers = [
float(entry_n1.get()),
float(entry_n2.get()),
float(entry_n3.get()),
float(entry_n4.get())
]
*# Знаходимо мінімальне за допомогою функції min()*
min_val = min(numbers)
result_label.config(text=f"Найменше число: {min_val}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсні числа в усі поля.")
# Створення головного вікна
root = tk.Tk()
root.title("Найменше з чотирьох чисел")
root.geometry("300x200")
# Створення та розміщення елементів
tk.Label(root, text="Число 1:").grid(row=0, column=0, padx=10, pady=5)
entry_n1 = tk.Entry(root)
entry_n1.grid(row=0, column=1, padx=10, pady=5)
tk.Label(root, text="Число 2:").grid(row=1, column=0, padx=10, pady=5)
entry_n2 = tk.Entry(root)
entry_n2.grid(row=1, column=1, padx=10, pady=5)
tk.Label(root, text="Число 3:").grid(row=2, column=0, padx=10, pady=5)
entry_n3 = tk.Entry(root)
entry_n3.grid(row=2, column=1, padx=10, pady=5)
tk.Label(root, text="Число 4:").grid(row=3, column=0, padx=10, pady=5)
entry_n4 = tk.Entry(root)
entry_n4.grid(row=3, column=1, padx=10, pady=5)
find_button = tk.Button(root, text="Знайти найменше", command=find_smallest)
find_button.grid(row=4, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=5, columnspan=2)
root.mainloop()
8. Проєкт, який обчислює модуль довільного числа
import tkinter as tk
from tkinter import messagebox
def calculate_module():
"""Обчислює модуль введеного числа."""
try:
x = float(entry_x.get())
# Використовуємо вбудовану функцію abs() для знаходження модуля
module = abs(x)
result_label.config(text=f"Модуль числа {x} дорівнює {module}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсне число.")
# Створення головного вікна
root = tk.Tk()
root.title("Модуль числа")
root.geometry("300x120")
# Створення та розміщення елементів
tk.Label(root, text="Введіть число:").grid(row=0, column=0, padx=10, pady=5)
entry_x = tk.Entry(root)
entry_x.grid(row=0, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити модуль", command=calculate_module)
calc_button.grid(row=1, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=2, columnspan=2)
root.mainloop()
9. Проєкт зі зміною ширини кнопки
import tkinter as tk
# Початкова ширина кнопки
current_width = 40
def change_width():
"""Функція для зміни ширини кнопки при кожному натисканні."""
global current_width # Оголошуємо, що будемо змінювати глобальну змінну
# Зменшуємо ширину на 5
current_width -= 5
# Якщо ширина стала меншою за 10, повертаємо її до 40
if current_width < 10:
current_width = 40
# Застосовуємо нову ширину до кнопки
button.config(width=current_width)
# Створюємо головне вікно
root = tk.Tk()
root.title("Зміна ширини кнопки")
root.geometry("400x150")
# Створюємо кнопку з початковою шириною
button = tk.Button(root, text="Натисни мене!", width=current_width, command=change_width)
button.pack(pady=40)
# Запускаємо головний цикл вікна
root.mainloop()
10. Проєкт для обчислення значення кусково-заданої функції №1
import tkinter as tk
from tkinter import messagebox
def calculate_function():
"""Обчислює значення функції y = {15 – 3x, якщо –1 < x < 4; 6 + 4x для всіх інших x}."""
try:
x = float(entry_x.get())
if -1 < x < 4:
y = 15 - 3 * x
else:
y = 6 + 4 * x
result_label.config(text=f"Значення функції y = {y:.2f}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсне число.")
# Створення головного вікна
root = tk.Tk()
root.title("Обчислення функції №1")
root.geometry("300x120")
# Створення та розміщення елементів
tk.Label(root, text="Введіть значення x:").grid(row=0, column=0, padx=10, pady=5)
entry_x = tk.Entry(root)
entry_x.grid(row=0, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити", command=calculate_function)
calc_button.grid(row=1, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=2, columnspan=2)
root.mainloop()
11. Проєкт для обчислення значення кусково-заданої функції №2
import tkinter as tk
from tkinter import messagebox
def calculate_function():
"""Обчислює значення функції y = {2x – 4, якщо x < 2; x² + 5, якщо 2 ≤ x ≤ 7; 3 – 5x, якщо x > 7}."""
try:
x = float(entry_x.get())
if x < 2:
y = 2 * x - 4
elif 2 <= x <= 7:
y = x**2 + 5
else: *# x > 7*
y = 3 - 5 * x
result_label.config(text=f"Значення функції y = {y:.2f}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсне число.")
# Створення головного вікна
root = tk.Tk()
root.title("Обчислення функції №2")
root.geometry("300x120")
# Створення та розміщення елементів
tk.Label(root, text="Введіть значення x:").grid(row=0, column=0, padx=10, pady=5)
entry_x = tk.Entry(root)
entry_x.grid(row=0, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити", command=calculate_function)
calc_button.grid(row=1, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=2, columnspan=2)
root.mainloop()
12. Проєкт для обчислення значення кусково-заданої функції №3
import tkinter as tk
from tkinter import messagebox
def calculate_function():
"""Обчислює y = {2x–4, якщо x<2; x²+5, якщо 5≤x≤12; 3–5x для інших x}."""
try:
x = float(entry_x.get())
if x < 2:
y = 2 * x - 4
elif 5 <= x <= 12:
y = x**2 + 5
else: *# для 2 <= x < 5 або x > 12*
y = 3 - 5 * x
result_label.config(text=f"Значення функції y = {y:.2f}")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсне число.")
# Створення головного вікна
root = tk.Tk()
root.title("Обчислення функції №3")
root.geometry("300x120")
# Створення та розміщення елементів
tk.Label(root, text="Введіть значення x:").grid(row=0, column=0, padx=10, pady=5)
entry_x = tk.Entry(root)
entry_x.grid(row=0, column=1, padx=10, pady=5)
calc_button = tk.Button(root, text="Обчислити", command=calculate_function)
calc_button.grid(row=1, columnspan=2, pady=10)
result_label = tk.Label(root, text="Результат:")
result_label.grid(row=2, columnspan=2)
root.mainloop()
13. Проєкт для визначення, чи можна утворити трикутник
import tkinter as tk
from tkinter import messagebox
def check_triangle():
"""Перевіряє, чи можна утворити трикутник із заданих сторін."""
try:
a = float(entry_a.get())
b = float(entry_b.get())
c = float(entry_c.get())
# Перевірка, чи сторони додатні та чи виконується нерівність трикутника
if a > 0 and b > 0 and c > 0 and a + b > c and a + c > b and b + c > a:
result = "З цих відрізків можна утворити трикутник."
else:
result = "З цих відрізків трикутник утворити неможливо."
messagebox.showinfo("Результат", result)
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть дійсні числа для всіх сторін.")
# Створення головного вікна
root = tk.Tk()
root.title("Перевірка трикутника")
root.geometry("350x150")
# Створення та розміщення елементів
tk.Label(root, text="Довжина сторони a:").grid(row=0, column=0, padx=10, pady=5)
entry_a = tk.Entry(root)
entry_a.grid(row=0, column=1, padx=10, pady=5)
tk.Label(root, text="Довжина сторони b:").grid(row=1, column=0, padx=10, pady=5)
entry_b = tk.Entry(root)
entry_b.grid(row=1, column=1, padx=10, pady=5)
tk.Label(root, text="Довжина сторони c:").grid(row=2, column=0, padx=10, pady=5)
entry_c = tk.Entry(root)
entry_c.grid(row=2, column=1, padx=10, pady=5)
check_button = tk.Button(root, text="Перевірити", command=check_triangle)
check_button.grid(row=3, columnspan=2, pady=10)
root.mainloop()
14. Проєкт для порівняння прибутку по депозитах
import tkinter as tk
from tkinter import messagebox
def compare_deposits():
"""Порівнює прибутковість двох депозитів за рік."""
try:
initial_sum = float(entry_sum.get())
if initial_sum <= 0:
messagebox.showwarning("Увага", "Сума вкладу має бути додатною.")
return
# Депозит 1: 15% річних
final_sum1 = initial_sum * 1.15
# Депозит 2: 7% за пів року з капіталізацією
final_sum2 = initial_sum * (1.07)**2
result_text = (f"Сума через рік по депозиту 15% річних: {final_sum1:.2f}\n"
f"Сума через рік по депозиту 7% за пів року: {final_sum2:.2f}\n\n")
if final_sum1 > final_sum2:
result_text += "Депозит під 15% річних є вигіднішим."
elif final_sum2 > final_sum1:
result_text += "Депозит під 7% за пів року є вигіднішим."
else:
result_text += "Обидва депозити однаково вигідні."
messagebox.showinfo("Порівняння депозитів", result_text)
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть суму вкладу.")
# Створення головного вікна
root = tk.Tk()
root.title("Порівняння депозитів")
root.geometry("300x100")
# Створення та розміщення елементів
tk.Label(root, text="Введіть суму вкладу:").grid(row=0, column=0, padx=10, pady=5)
entry_sum = tk.Entry(root)
entry_sum.grid(row=0, column=1, padx=10, pady=5)
compare_button = tk.Button(root, text="Порівняти", command=compare_deposits)
compare_button.grid(row=1, columnspan=2, pady=10)
root.mainloop()
Готуємось до вивчення нового матеріалу
1. Які елементи керування у віконних проєктах ви знаєте?
У віконних проєктах я знаю такі елементи керування: Напис (Label), Поле (Entry), Кнопка (Button) та Вікно повідомлень (messagebox).
2. Для чого використовувався кожний з них?
- Напис (Label): Використовувався для відображення тексту, наприклад, для підписів до полів введення, щоб було зрозуміло, які дані потрібно вводити.
- Поле (Entry): Слугувало для того, щоб користувач міг вводити дані з клавіатури.
- Кнопка (Button): Використовувалася, щоб після її натискання виконувалася певна дія, наприклад, обчислення за введеними даними.
- Вікно повідомлень (showinfo): Потрібне для виведення результатів обчислень або будь-яких повідомлень для користувача в окремому невеликому вікні.
3. Як використовувалися події з цими елементами керування?
Події використовувалися в основному з кнопкою. Для кнопки вказувалася властивість command, якій присвоювали ім’я функції (наприклад, command=click). Коли користувач натискав на кнопку, відбувалася подія — виклик цієї функції. Функція, у свою чергу, зчитувала дані з полів (entry1.get()), виконувала потрібні обчислення і виводила результат за допомогою вікна повідомлень.
