ПРИГАДАЙТЕ
Що таке список?
Список у мові програмування Python — це впорядкована змінна колекція елементів будь-яких типів даних, які записуються у квадратних дужках і розділяються комами.
Які імена мають елементи списку?
Елементи списку мають імена, які складаються з імені самого списку та порядкового номера (індексу) елемента у квадратних дужках (наприклад, a[0], a[1], a[-1]).
Які ви знаєте способи створення списку в пам’яті комп’ютера?
Основними способами створення списку в пам’яті комп’ютера є:
- Безпосереднє присвоєння значень у квадратних дужках (наприклад,
a = [2, 4, 6]). - Створення порожнього списку за допомогою порожніх квадратних дужок
a = []або вбудованої функціїa = list(). - Введення значень із клавіатури та перетворення їх на список за допомогою методу
split()(наприклад,a = input().split()) або шляхом циклічного додавання елементів за допомогою методуappend(). - Створення списку з іншого ітерованого об’єкта (наприклад, рядка) за допомогою функції
list()(наприклад,a = list("Python")). - Використання генераторів списків (наприклад,
a = [x for x in range(10)]).
Які ви знаєте способи виведення значень елементів списку?
Основними способами виведення значень елементів списку є:
- Виведення списку як єдиного об’єкта (разом із квадратними дужками та комами) за допомогою функції
print(a). - Поелементне виведення значень у циклі за допомогою конструкції
for x in a: print(x). - Поелементне виведення за допомогою індексів у циклі
for i in range(len(a)): print(a[i]). - Виведення значень списку через пробіл (без дужок та ком) за допомогою оператора розпакування
print(*a).
Що таке функція у проєкті мовою програмування Python?
Функція у проєкті мовою програмування Python — це окрема іменована частина програми, яка являє собою самостійний блок коду для вирішення конкретного завдання, може приймати вхідні дані (аргументи), виконувати над ними визначені дії та повертати результат.
ВИКОРИСТАННЯ ФУНКЦІЙ ДЛЯ ОПРАЦЮВАННЯ СПИСКІВ
Що таке аргумент функції? Скільки аргументів може мати функція? Як передаються у функцію значення її аргументів?
Аргумент функції — це дані або значення, які передаються у функцію для виконання нею обчислень чи інших дій. Функція може не мати аргументів взагалі, мати один аргумент або кілька аргументів, залежно від її призначення. Значення аргументів передаються у функцію в круглих дужках під час її виклику.
Що таке результат функції? Як передаються (повертаються) значення результатів функції в команду її виклику?
Результат функції — це значення, яке обчислюється всередині функції та повертається в точку програми, звідки цю функцію викликали. Значення результату повертається в команду виклику за допомогою оператора return, після якого зазначається відповідна змінна або вираз.
Яке призначення функцій sum, min, max у табличному процесорі Excel?
У табличному процесорі Excel функція SUM призначена для обчислення суми чисел у вибраному діапазоні комірок, MIN — для пошуку найменшого (мінімального) значення серед чисел у діапазоні, а MAX — для визначення найбільшого (максимального) значення в діапазоні.
ПОМІРКУЙТЕ
Поміркуйте, що потрібно змінити в командах функції, щоб змінений варіант знаходив найбільше серед значень елементів списку.
Щоб змінений варіант функції знаходив найбільше серед значень елементів списку, необхідно в коді функції min змінити оператор порівняння менше (<) на оператор більше (>). Також для відповідності логіці програми доцільно змінити назву функції на max, назву змінної збереження результату з m на maximum, а також оновити супровідні коментарі в коді.
ВИКОРИСТАННЯ МЕТОДІВ ДЛЯ ОПРАЦЮВАННЯ СПИСКІВ
Які методи вам відомі для опрацювання списків?
Для опрацювання списків у мові програмування Python відомі такі методи:
append()— додає елемент у кінець списку;clear()— видаляє всі елементи зі списку;insert()— уставляє значення у список як елемент із зазначеним індексом;remove()— видаляє перший елемент зі списку, що має вказане значення;pop()— видаляє елемент із зазначеним індексом та повертає його значення (якщо індекс не вказано, видаляється останній елемент);count()— визначає кількість входжень вказаного значення у список;index()— визначає індекс першого входження вказаного значення у список.
ВИКОРИСТАННЯ МЕТОДІВ ДЛЯ ОПРАЦЮВАННЯ СПИСКІВ
Для чого призначені ці методи?
Ці методи призначені для безпосередньої зміни списків або отримання інформації про їхні елементи, зокрема для очищення списку, вставлення елемента за вказаним індексом, видалення елементів за значенням або індексом, підрахунку кількості входжень значень та визначення індексу першого входження елемента у списку.
ПРАЦЮЄМО З КОМП’ЮТЕРОМ
Задача. Створити список із температур о 8-й годині ранку кожного дня першої декади (перших десяти днів) місяця. Визначити середню температуру. Сформувати другий список із номерів днів, коли температура була від’ємною. Вивести значення елементів другого списку.
Відомо:
- Кількість днів декади: $n = 10$
- Список температур першої декади: $a = [t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9, t_{10}]$
Знайти:
- Середня температура: $T_{avg} – ?$
- Список номерів днів з від’ємною температурою: $b – ?$
Розв’язання:
Для обчислення середньої температури використовується формула:
$T_{avg} = \dfrac{\sum_{i=1}^{10} a[i-1]}{10}$
Код мовою Python для реалізації цієї задачі:
a = []
for i in range(10):
x = float(input(f"Уведіть температуру для дня {i + 1}: "))
a.append(x)
T_avg = sum(a) / 10
print(f"Середня температура: {T_avg}")
b = []
for i in range(10):
if a[i] < 0:
b.append(i + 1)
if len(b) == 0:
print("Від'ємних температур немає")
else:
print("Номери днів з від'ємною температурою:", *b)
Відповідь: програма зчитує 10 значень температур, обчислює їхнє середнє значення за допомогою ділення суми елементів на 10, формує новий список із номерів днів (індекс елемента плюс 1), коли температура була нижчою за 0, і виводить цей список на екран.
ДАЙТЕ ВІДПОВІДІ НА ЗАПИТАННЯ
1. Які ви знаєте операції, що можна виконувати над списком? Для чого можна використовувати кожну з них? Наведіть приклади.
Над списками можна виконувати такі операції:
- Об’єднання списків (операція
+): використовується для злиття кількох списків в один спільний список. Приклад: якщоa = [2, 4, 6]іb = [10, 12], тоa + b = [2, 4, 6, 10, 12]. - Дублювання або розмноження списку (операція
*): використовується для повторення елементів списку вказану кількість разів. Приклад: якщоa = [2, 4], то результат операціїa * 3буде[2, 4, 2, 4, 2, 4]. - Добування зрізу списку: використовується для отримання окремої частини списку за шаблоном
a[i:j:step], деi— індекс початку зрізу,j— індекс кінця зрізу (не включається),step— крок зрізу. Приклад: для спискуa = [2, 4, 6, 8, 10]зрізa[1:4]поверне[4, 6, 8]. - Перевірка входження елемента (операція
in): використовується для визначення, чи міститься вказане значення серед елементів списку. Приклад: для спискуa = [2, 4, 6]вираз2 in aповернеTrue, а3 in aповернеFalse.
2. Які ви знаєте функції, що можна використовувати для опрацювання списку? Для чого можна використовувати кожну з них? Наведіть приклади.
Для опрацювання списків використовують такі стандартні функції:
len(a): використовується для визначення загальної кількості елементів (довжини) у спискуa. Приклад: для спискуa = [2, 4, 6, 8]результатlen(a)дорівнює4.sum(a): використовується для обчислення суми значень усіх числових елементів спискуa. Приклад: для спискуa = [2, 4, 6, 8]результатsum(a)дорівнює20.min(a): використовується для знаходження найменшого значення серед елементів спискуa. Приклад: для спискуa = [2, 4, 6, 8]результатmin(a)дорівнює2.max(a): використовується для знаходження найбільшого значення серед елементів спискуa. Приклад: для спискуa = [2, 4, 6, 8]результатmax(a)дорівнює8.
3. Які ви знаєте методи, що можна використовувати для опрацювання списку? Для чого можна використовувати кожен з них? Наведіть приклади.
Для опрацювання списків використовують такі методи:
append(value): додає вказане значення в кінець списку. Приклад: якщоa = [2, 4], то після виконанняa.append(6)список стане[2, 4, 6].clear(): видаляє всі елементи зі списку, роблячи його порожнім. Приклад: якщоa = [2, 4], то після виконанняa.clear()список стане[].insert(index, value): уставляє вказане значення у список на позицію з відповідним індексом. Приклад: якщоa = [2, 4], то після виконанняa.insert(1, 3)список стане[2, 3, 4].remove(value): видаляє перший елемент списку, який дорівнює вказаному значенню. Приклад: якщоa = [2, 4, 6, 4], то після виконанняa.remove(4)список стане[2, 6, 4].pop(index): видаляє елемент із вказаним індексом і повертає його значення (якщо індекс не вказано, видаляється останній елемент). Приклад: якщоa = [2, 4, 6], то після виконанняx = a.pop(1)значенняxбуде4, а списокaстане[2, 6].count(value): визначає кількість входжень вказаного значення у списку. Приклад: якщоa = [2, 4, 4, 6], тоa.count(4)поверне2.index(value): визначає індекс першого входження вказаного значення у списку. Приклад: якщоa = [2, 4, 6], тоa.index(4)поверне1.
ОБГОВОРІТЬ І ЗРОБІТЬ ВИСНОВКИ
1. Для розв’язування яких задач можна використати наведені фрагменти проєктів?
а)
s = 0
for i in range(10):
if a[i] > 0:
s = s + a[i]
б)
k = 0
for i in range(10):
if a[i] < 0:
k = k + 1
в)
k = 0
for i in range(10):
if a[i] == x:
k = k + 1
Фрагмент а) обчислює суму всіх додатних елементів списку a серед перших 10 елементів (з індексами від 0 до 9).
Фрагмент б) визначає кількість від’ємних елементів списку a серед перших 10 елементів (з індексами від 0 до 9).
Фрагмент в) визначає кількість елементів списку a серед перших 10 елементів (з індексами від 0 до 9), значення яких дорівнюють значенню змінної x.
2. З якою метою в наведеному фрагменті проєкту використано змінну f?
f = False
for i in range(10):
if a[i] == x:
f = True
break
Який тип цієї змінної? Чи можна було б із цією самою метою використати змінну іншого типу? Відповідь поясніть.
Змінна f використана як логічний прапорець для відстеження наявності елемента зі значенням x у списку a. Початкове значення False означає, що такий елемент ще не знайдено, а значення True встановлюється в разі його виявлення, після чого цикл переривається командою break.
Ця змінна має логічний тип (bool).
Із цією самою метою можна було б використати змінну іншого типу, наприклад, цілочисельного (int) або рядкового (str). Зокрема, замість False можна використовувати число 0 або рядок 'ні', а замість True — число 1 або рядок 'так'. Проте використання логічного типу bool є раціональним, оскільки воно спрощує структуру коду та потребує менше ресурсів пам’яті.
3. Як потрібно змінити наведений фрагмент, щоб у ньому визначалося найменше значення елементів списку?
maximum = a[0]
for i in range(1,10):
if a[i] > maximum:
maximum = a[i]
Для визначення найменшого значення елементів списку потрібно змінити назву змінної maximum на minimum, а також замінити знак порівняння > на < в умові розгалуження.
Змінений фрагмент коду:
minimum = a[0]
for i in range(1, 10):
if a[i] < minimum:
minimum = a[i]
4. Якщо у списку кілька елементів дорівнюють найбільшому значенню серед значень усіх елементів цього списку, то фрагмент:
maximum = a[0]
nommax = 0
for i in range(1,10):
if a[i] > maximum:
maximum = a[i]
nommax = i
визначає номер якого з них? Чи зміниться щось, якщо в розгалуженні змінити знак > на знак >=?
Наведений фрагмент визначає номер (індекс) першого з таких елементів (тобто елемента з найменшим індексом серед тих, що мають максимальне значення). Це зумовлено тим, що за суворої нерівності > умова не виконується для наступних елементів із таким самим максимальним значенням, і значення змінної nommax не оновлюється.
Якщо в розгалуженні змінити знак > на >=, фрагмент визначатиме номер останнього з таких елементів (тобто елемента з найбільшим індексом серед тих, що мають максимальне значення). У такому разі кожне наступне входження максимального значення задовольнятиме умову і перезаписуватиме індекс у змінну nommax.
5. Для розв’язування якої задачі можна використати наведені фрагменти? Порівняйте їхню ефективність. Відповідь поясніть.
а)
maximum = a[0]
nmax = 0
minimum = a[0]
nmin = 0
for i in range(1, 10):
if a[i] > maximum:
maximum = a[i]
nmax = i
elif a[i] < minimum:
minimum = a[i]
nmin = i
a[nmax] = minimum
a[nmin] = maximum
б)
maximum = a[0]
nmax = 0
minimum = a[0]
nmin = 0
for i in range(1, 10):
if a[i] > maximum:
maximum = a[i]
nmax = i
if a[i] < minimum:
minimum = a[i]
nmin = i
a[nmax] = minimum
a[nmin] = maximum
Обидва фрагменти призначені для розв’язування задачі знаходження найбільшого та найменшого елементів у списку a (з індексами від 0 до 9) та взаємного обміну їхніх значень місцями.
Фрагмент а) є більш ефективним, ніж фрагмент б). У фрагменті а) використано конструкцію elif (повне розгалуження). Якщо виконується перша умова a[i] > maximum, то перевірка другої умови elif a[i] < minimum пропускається. У фрагменті б) використано два незалежні неповні розгалуження if, тому обидві умови перевіряються для кожного елемента списку без винятку, що призводить до більшої кількості операцій порівняння.
ОБГОВОРІТЬ І ЗРОБІТЬ ВИСНОВКИ
6. Для розв’язування якої задачі можна використати наведений фрагмент?
s = 0
k = 0
for x in a:
if x > 0:
s = s + x
k = k + 1
sa = s / k
У яких випадках під час виконання проєкту із цим фрагментом може виникнути помилка? Відповідь поясніть.
Наведений фрагмент програми призначений для знаходження середнього арифметичного значення всіх додатних елементів списку a.
Помилка під час виконання цього фрагменту виникне у тому випадку, коли в списку a немає жодного елемента, більшого за нуль, або якщо сам список a є порожнім. У такій ситуації умова if x > 0 жодного разу не виконається, значення змінної k залишиться рівним 0, а під час виконання команди ділення sa = s / k відбудеться помилка ділення на нуль (ZeroDivisionError).
ВИКОНАЙТЕ ЗАВДАННЯ
1. Нехай а = [2, 3, 6, 11, 10, 15, 4, 16, 28, 40]. Запишіть у зошит результати виконання команд:
а) b = a[2:6];
б) b = a[1:8:2];
в) b = a[4:];
г) b = a[:3];
д) b = a[9:5:-1];
е) b = a[::2];
ж) b = a[::-1];
з) b = a[-4:-1].
Результати виконання команд для заданого списку а:
а) b = [6, 11, 10, 15]
б) b = [3, 11, 15, 16]
в) b = [10, 15, 4, 16, 28, 40]
г) b = [2, 3, 6]
д) b = [40, 28, 16, 4]
е) b = [2, 6, 10, 4, 28]
ж) b = [40, 28, 16, 4, 15, 10, 11, 6, 3, 2]
з) b = [4, 16, 28]
2. Створіть проєкт, у якому в списку зберігаються значення середніх денних температур за кожен день тижня і визначається середнє арифметичне від’ємних із них. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.2.
Код консольного проєкту мовою Python для розв’язання цієї задачі:
# Створення порожнього списку для зберігання температур
temperatures = []
# Введення середніх денних температур для 7 днів тижня
print("Введіть значення середніх денних температур за кожен день тижня:")
for i in range(7):
temp = float(input(f"День {i+1}: "))
temperatures.append(temp)
# Фільтрування лише від'ємних температур
negative_temps = [temp for temp in temperatures if temp < 0]
# Обчислення середнього арифметичного від'ємних температур
if len(negative_temps) > 0:
average_negative = sum(negative_temps) / len(negative_temps)
print(f"Середнє арифметичне від'ємних температур: {average_negative:.2f}")
else:
print("Протягом тижня не було від'ємних температур.")
3. Створіть віконний проєкт, у якому в списку зберігаються кількості відвідувачів музею в кожен із 10 днів місяця і визначається, скільки днів кількість відвідувачів перевищувала задану кількість осіб. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.3.
Код віконного проєкту мовою Python із використанням графічної бібліотеки tkinter:
import tkinter as tk
from tkinter import messagebox
def calculate():
try:
# Отримання кількостей відвідувачів, введених через пропуски
visitors_input = entry_visitors.get()
visitors = list(map(int, visitors_input.split()))
# Перевірка наявності рівно 10 значень
if len(visitors) != 10:
messagebox.showerror("Помилка", "Необхідно ввести рівно 10 значень кількості відвідувачів!")
return
# Отримання заданої кількості осіб для порівняння
limit = int(entry_limit.get())
# Підрахунок кількості днів, коли показник перевищував ліміт
count = 0
for day_visitors in visitors:
if day_visitors > limit:
count += 1
# Виведення результату на екран
label_result.config(text=f"Кількість днів з відвідуваністю понад {limit} осіб: {count}")
except ValueError:
messagebox.showerror("Помилка", "Перевірте правильність введених даних. Вводьте лише цілі числа!")
# Створення головного вікна
root = tk.Tk()
root.title("Відвідуваність музею")
root.geometry("460x260")
# Опис та поле для введення кількості відвідувачів
label_info = tk.Label(root, text="Введіть кількість відвідувачів за 10 днів (через пропуски):")
label_info.pack(pady=5)
entry_visitors = tk.Entry(root, width=50)
entry_visitors.pack(pady=5)
entry_visitors.insert(0, "150 200 180 90 220 310 130 145 250 190")
# Опис та поле для введення граничного ліміту
label_limit_info = tk.Label(root, text="Введіть задану кількість осіб для порівняння:")
label_limit_info.pack(pady=5)
entry_limit = tk.Entry(root, width=15)
entry_limit.pack(pady=5)
entry_limit.insert(0, "200")
# Кнопка запуску обчислень
btn_calc = tk.Button(root, text="Розрахувати кількість днів", command=calculate)
btn_calc.pack(pady=10)
# Поле виведення результату
label_result = tk.Label(root, text="", font=("Arial", 11, "bold"))
label_result.pack(pady=5)
root.mainloop()
4. Створіть віконний проєкт, у якому в списку зберігаються семестрові оцінки учня з 12 предметів і визначається, чи є серед них оцінки, вищі за задану. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.4.
Код віконного проєкту мовою Python із використанням графічної бібліотеки tkinter:
import tkinter as tk
from tkinter import messagebox
def check_grades():
try:
# Отримання 12 семестрових оцінок, введених через пропуски
grades_input = entry_grades.get()
grades = list(map(int, grades_input.split()))
# Перевірка наявності рівно 12 оцінок
if len(grades) != 12:
messagebox.showerror("Помилка", "Необхідно ввести рівно 12 семестрових оцінок!")
return
# Валідація діапазону оцінок (від 1 до 12)
for g in grades:
if not (1 <= g <= 12):
messagebox.showerror("Помилка", "Оцінки мають бути цілими числами від 1 до 12!")
return
# Отримання заданого значення оцінки
limit = int(entry_limit.get())
if not (1 <= limit <= 12):
messagebox.showerror("Помилка", "Задана оцінка для перевірки має бути від 1 до 12!")
return
# Логічна змінна для визначення наявності оцінки, яка вища за задану
found = False
for grade in grades:
if grade > limit:
found = True
break
# Виведення відповідного результату
if found:
label_result.config(text=f"Так, серед оцінок є вищі за {limit}!", fg="green")
else:
label_result.config(text=f"Ні, оцінок, вищих за {limit}, немає.", fg="red")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть коректні цілі числа!")
# Створення головного вікна
root = tk.Tk()
root.title("Аналіз семестрових оцінок")
root.geometry("460x260")
# Опис та поле для введення оцінок
label_info = tk.Label(root, text="Введіть 12 семестрових оцінок учня (через пропуски):")
label_info.pack(pady=5)
entry_grades = tk.Entry(root, width=50)
entry_grades.pack(pady=5)
entry_grades.insert(0, "8 9 7 10 6 5 11 8 9 12 7 10")
# Опис та поле для введення граничної оцінки
label_limit_info = tk.Label(root, text="Введіть задану оцінку для перевірки:")
label_limit_info.pack(pady=5)
entry_limit = tk.Entry(root, width=15)
entry_limit.pack(pady=5)
entry_limit.insert(0, "10")
# Кнопка для перевірки
btn_check = tk.Button(root, text="Перевірити оцінки", command=check_grades)
btn_check.pack(pady=10)
# Поле виведення результату
label_result = tk.Label(root, text="", font=("Arial", 11, "bold"))
label_result.pack(pady=5)
root.mainloop()
ВИКОНАЙТЕ ЗАВДАННЯ
5. Випускник / випускниця 9 класу може одержати Свідоцтво з відзнакою, якщо всі його / її річні оцінки не менші ніж 10. Створіть проєкт для визначення, чи отримає цей учень / учениця Свідоцтво з відзнакою. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.5.
Для вирішення цього завдання створюється проєкт мовою Python, який зчитує річні оцінки учня або учениці, перевіряє кожну з них на відповідність умові (не менше ніж 10 балів) і виводить результат.
Проєкт у файлі завдання 3.2.5.py:
# Завдання 3.2.5
# Зчитування оцінок, уведених через пропуск
grades = list(map(int, input("Уведіть річні оцінки учня / учениці через пропуск: ").split()))
# Змінна-прапорець для перевірки відповідності вимогам
has_distinction = True
# Перевірка оцінок за допомогою циклу
for grade in grades:
if grade < 10:
has_distinction = False
break
# Виведення результату
if has_distinction:
print("Учень / учениця отримає Свідоцтво з відзнакою.")
else:
print("Учень / учениця не отримає Свідоцтво з відзнакою.")
6. Створіть проєкт, у якому для довільного списку з різних дійсних чисел визначається найменший елемент і його значення обмінюється місцями з початковим елементом списку. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.6.
У цьому проєкті для пошуку найменшого значення списку використовується вбудована функція min(), а для знаходження його індексу — метод index(). Після цього здійснюється обмін значень найменшого та першого (з індексом 0) елементів списку.
Проєкт у файлі завдання 3.2.6.py:
# Завдання 3.2.6
# Введення списку дійсних чисел через пропуск
numbers = list(map(float, input("Уведіть елементи списку дійсних чисел через пропуск: ").split()))
# Пошук найменшого елемента та його індексу
min_value = min(numbers)
min_index = numbers.index(min_value)
# Обмін значеннями найменшого елемента з початковим елементом списку
numbers[0], numbers[min_index] = numbers[min_index], numbers[0]
# Виведення зміненого списку
print("Оновлений список після обміну місцями:", numbers)
7. Створіть проєкт, у якому для довільного списку з різних дійсних чисел визначається найменший і найбільший елементи. Найбільший елемент поміняйте місцями з елементом з індексом 2, а найменший — з передостаннім. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.7.
Для правильного виконання обміну місцями спочатку знаходяться найбільше та найменше значення. Почерговий обмін виконується з динамічним оновленням індексів, щоб запобігти помилкам у разі, якщо початкове положення одного з екстремальних елементів збігається з цільовими індексами для обміну.
Проєкт у файлі завдання 3.2.7.py:
# Завдання 3.2.7
# Введення списку дійсних чисел через пропуск (має містити не менше 3 елементів)
numbers = list(map(float, input("Уведіть елементи списку (не менше 3 чисел) через пропуск: ").split()))
# Пошук найбільшого та найменшого значень
max_value = max(numbers)
min_value = min(numbers)
# Обмін найбільшого елемента з елементом з індексом 2
max_index = numbers.index(max_value)
numbers[max_index] = numbers[2]
numbers[2] = max_value
# Перевизначення індексу найменшого елемента після першого обміну
min_index = numbers.index(min_value)
# Обмін найменшого елемента з передостаннім елементом (індекс -2)
numbers[min_index] = numbers[-2]
numbers[-2] = min_value
# Виведення зміненого списку
print("Оновлений список після обмінів місцями:", numbers)
8. Створіть проєкт, у якому в списку зберігаються семестрові оцінки учня / учениці з 15 предметів, яких оцінок у нього / неї найбільше: початкового рівня (1–3), середнього рівня (4–6), достатнього рівня (7–9) чи високого рівня (10–12). Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.8.
Цей проєкт класифікує кожну з 15 оцінок за чотирма рівнями навчальних досягнень, після чого визначає, яка з категорій містить максимальну кількість оцінок. Програма враховує варіант, коли однакова найбільша кількість оцінок належить кільком різним рівням одночасно.
Проєкт у файлі завдання 3.2.8.py:
# Завдання 3.2.8
# Введення 15 семестрових оцінок через пропуск
grades = list(map(int, input("Уведіть 15 оцінок через пропуск: ").split()))
# Ініціалізація лічильників рівнів
low_level = 0 # Початковий рівень (1–3)
mid_level = 0 # Середній рівень (4–6)
suf_level = 0 # Достатній рівень (7–9)
high_level = 0 # Високий рівень (10–12)
# Підрахунок оцінок за рівнями
for grade in grades:
if 1 <= grade <= 3:
low_level += 1
elif 4 <= grade <= 6:
mid_level += 1
elif 7 <= grade <= 9:
suf_level += 1
elif 10 <= grade <= 12:
high_level += 1
# Визначення максимальної кількості оцінок серед усіх рівнів
max_count = max(low_level, mid_level, suf_level, high_level)
# Виведення рівнів, яких виявилося найбільше
print("Найбільше оцінок такого рівня / таких рівнів:")
if low_level == max_count:
print("- Початковий рівень (1-3 бали)")
if mid_level == max_count:
print("- Середній рівень (4-6 балів)")
if suf_level == max_count:
print("- Достатній уровень (7-9 балів)")
if high_level == max_count:
print("- Високий рівень (10-12 балів)")
9. Створіть проєкт, у якому в списку зберігаються кількості деталей, виготовлених робітником за кожен день протягом першої половини місяця, визначається найбільша кількість деталей, виготовлених упродовж одного дня, і протягом скількох днів він виготовляв цю найбільшу кількість деталей. Створити два розв’язки задачі. Перше — у якому список переглядатиметься двічі, і друге — у якому список переглядатиметься один раз. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.9.
Для реалізації цієї задачі розроблено дві версії коду. У першому варіанті список сканується спочатку для знаходження максимуму, а потім окремо підраховується кількість його входжень. У другому варіанті максимум та його частота визначаються одночасно за один прохід циклу.
Проєкт у файлі завдання 3.2.9.py:
Варіант 1 (Список переглядається двічі):
# Завдання 3.2.9 - Перший варіант
# Введення кількості деталей за кожен день першої половини місяця через пропуск
details = list(map(int, input("Уведіть кількість деталей за кожен день через пропуск: ").split()))
# Перший перегляд списку: пошук максимального значення
max_details = max(details)
# Другий перегляд списку: підрахунок кількості днів з таким результатом
days_count = details.count(max_details)
print("Найбільша кількість деталей за день:", max_details)
print("Кількість днів, коли виготовлено цю кількість деталей:", days_count)
Варіант 2 (Список переглядається один раз):
# Завдання 3.2.9 - Другий варіант
# Введення кількості деталей за кожен день першої половини місяця через пропуск
details = list(map(int, input("Уведіть кількість деталей за кожен день через пропуск: ").split()))
# Одноразовий перегляд списку в одному циклі
max_details = details[0]
days_count = 1
for i in range(1, len(details)):
if details[i] > max_details:
max_details = details[i]
days_count = 1
elif details[i] == max_details:
days_count += 1
print("Найбільша кількість деталей за день:", max_details)
print("Кількість днів, коли виготовлено цю кількість деталей:", days_count)
10. Створіть проєкт, у якому в списку зберігаються кількості опадів за кожен день протягом місяця, визначається середня кількість опадів протягом цього місяця і в які дати кількість опадів більша за середню, а в які — менша від середньої. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.2.10.
Для вирішення цієї задачі розроблено проєкт на мові програмування Python, який приймає на вхід кількості опадів за кожен день місяця, розраховує середнє арифметичне значення та виводить списки дат (порядкових номерів днів), у які кількість опадів була більшою або меншою за середнє значення.
Код програми:
# Введення кількості опадів за кожен день місяця через пропуск
rainfall = list(map(float, input("Введіть кількість опадів за кожен день місяця через пропуск: ").split()))
# Обчислення середньої кількості опадів
average_rainfall = sum(rainfall) / len(rainfall)
print(f"Середня кількість опадів: {average_rainfall:.2f} мм")
above_average_dates = []
below_average_dates = []
# Визначення дат, коли кількість опадів була більшою або меншою за середню
for i in range(len(rainfall)):
date = i + 1
if rainfall[i] > average_rainfall:
above_average_dates.append(date)
elif rainfall[i] < average_rainfall:
below_average_dates.append(date)
print("Дати, коли кількість опадів була більшою за середню:", above_average_dates)
print("Дати, коли кількість опадів була меншою від середньої:", below_average_dates)
Проєкт збережено у робочій папці у файлі з назвою завдання 3.2.10.py.
ПРАКТИЧНА РОБОТА № 4
1. Створіть проєкт для розв’язування задачі: Уведіть 8 оцінок учня / учениці, отриманих ним / нею протягом вивчення теми. Визначте середню оцінку учня / учениці за тему. Визначте, скільки оцінок, вищих за 7.
Для вирішення цієї задачі розроблено проєкт на мові програмування Python, який зчитує 8 оцінок учня чи учениці, обчислює їхнє середнє значення та визначає кількість оцінок, які є суворо більшими за 7 балів.
Код програми:
# Введення 8 оцінок учня або учениці
grades = []
for i in range(8):
grade = int(input(f"Введіть оцінку {i + 1}: "))
grades.append(grade)
# Визначення середньої оцінки за тему
average_grade = sum(grades) / len(grades)
print(f"Середня оцінка за тему: {average_grade:.2f}")
# Визначення кількості оцінок, вищих за 7
count_above_seven = sum(1 for grade in grades if grade > 7)
print(f"Кількість оцінок, вищих за 7: {count_above_seven}")
2. Збережіть проєкт у вашій папці у файлі з іменем практична 4-1.ру.
Розроблений проєкт для аналізу оцінок учня або учениці збережено у робочій папці у файлі з назвою практична 4-1.py.
3. Створіть проєкт для розв’язування задачі: Уведіть час, який показав кожен з учасників змагань вашого закладу освіти з бігу на дистанцію 60 метрів. Визначте найбільший і найменший час. Визначте, скільки спортсменів показали найкращий час. Чи оновлено на цих змаганнях рекорд вашого закладу освіти?
Для вирішення цієї задачі розроблено проєкт на мові програмування Python, який аналізує результати забігу, визначає найгірший (найбільший) та найкращий (найменший) час, підраховує кількість спортсменів, що продемонстрували найкращий час, та порівнює його з чинним рекордом закладу освіти для перевірки його оновлення.
Код програми:
# Введення результатів учасників змагань через пропуск
times = list(map(float, input("Введіть час кожного учасника змагань через пропуск: ").split()))
# Введення чинного рекорду закладу освіти
school_record = float(input("Введіть існуючий рекорд закладу освіти (у секундах): "))
# Визначення найбільшого та найменшого часу
max_time = max(times)
min_time = min(times)
print(f"Найбільший час (найгірший результат): {max_time} с")
print(f"Найменший час (найкращий результат): {min_time} с")
# Визначення кількості спортсменів, які показали найкращий час
best_time_count = times.count(min_time)
print(f"Кількість спортсменів, які показали найкращий час: {best_time_count}")
# Перевірка, чи оновлено рекорд закладу освіти
if min_time < school_record:
print(f"Рекорд закладу освіти оновлено! Новий рекорд становить {min_time} с.")
else:
print("Рекорд закладу освіти не оновлено.")
4. Збережіть проєкт у вашій папці у файлі з іменем практична 4-2.ру.
Розроблений проєкт для аналізу результатів спортивних змагань збережено у робочій папці у файлі з назвою практична 4-2.py.
ГОТУЄМОСЬ ДО ВИВЧЕННЯ НОВОГО МАТЕРІАЛУ
1. Для чого впорядковують дані у списках, таблицях тощо?
Дані впорядковують для того, щоб зробити пошук потрібної інформації значно швидшим і зручнішим, а також для полегшення їхнього подальшого аналізу та комп’ютерного опрацювання [13].
2. Які є види сортування даних?
Основними видами сортування даних є сортування за зростанням, за спаданням, за неспаданням та за незростанням [13].
3. Як ви сортували дані в таблицях табличного процесора?
У табличному процесорі сортування даних здійснювалося за допомогою інструментів сортування на вкладці «Дані» або «Основне», де обиралося сортування за зростанням чи спаданням для одного стовпця або налаштовувалося багаторівневе сортування за кількома параметрами.
