Урок № 60. Застосування циклу for для опрацювання табличних величин

Сьогодні ми з вами продовжимо знайомитись із алгоритмами опрацювання списків та розглянемо алгоритм застосування циклу for для опрацювання табличних величин.

І. Опрацюйте теоретичний матеріал:

З конструкцією for i in range(n) ми знайомі з 8 класу, і використовували ми її для створення циклу з лічильником, але тоді ми ще не знали, що цикл for призначений саме для обробки списків. Тепер ми вже знаємо, що range(n) – список n чисел від 0 до n-1.
Основна конструкція цього циклу виглядає так:

Вже зрозуміло, що кількість повторень залежить від кількості елементів. В тілі циклу змінна і набуватиме значення елемента списку над яким відбувається робота. Ми вже працювали з подібним циклом, коли виводили елементи списку:

Як ми бачимо, при кожному повторі циклу значення змінної і змінюється на значення наступного елемента списку. Цей елемент виводиться, а після того, як будуть опрацьовані всі елементи списку, цикл завершиться.

За допомогою циклу for ми можемо представити практично всі функції для опрацювання списків, про які ми нещодавно дізналися. Наприклад, функція sum(). Все, що нам потрібно – створити певну змінну. При кожному повторенню циклу значення цієї змінної буде збільшуватись на значення елемента і. На початку значення змінної дорівнює 0:

Тепер розглянемо приклад із функцією count(). Цей алгоритм ми представимо у вигляді повноцінної програми, а отже на початку у користувача буде запитуватися список цілих чисел. Потім ще одне ціле число. Кількість таких цілих чисел потрібно порахувати. Аналогічно, як і в першому випадку, ми створюємо нову змінну. При кожному повторенню циклу буде перевірятись, чи елемент списку дорівнює введеному числу; і в позитивному випадку змінна кількості елементів буде збільшуватись на 1. Ну і в кінці виводитиметься кількість потрібних елементів. Ось код програми:

Також окрім стандартної конструкції циклу for, його можна представити одним рядком так, як представляємо його, коли запитуємо список у користувача. Звичайно така конструкція має більше недоліків, ніж переваг, але якщо ви хочете для кожного елемента застосувати будь-яку одну функцію, то такий запис буде дуже зручним. Отже, у квадратних дужках ми  повинні вказати функцію з атрибутом і та конструкцію циклу for:

Зверніть увагу, жодних розділових знаків встановлювати не потрібно. Наприклад, у нас є список із дійсних чисел, а нам потрібно всі числа округлити до цілого. Саме тут нам допоможе дана конструкція циклу for:

ІІ. Виконайте практичну роботу. Учням у яких немає можливості працювати з Python на комп’ютері можна складати програми у зошиті і надсилати для перевірки фотокопії своїх робіт. Для виконання практичної роботи можете використати онлайн систему https://techarge.in/online-python-compiler/

Завдання 1. Створіть проект, при роботі якого користувач буде вводити список із дійсних чисел, а на виході потрібно отримати список із чисел округлених до цілого.
Алгоритм роботи
1. Відкрийте середовище програмування IDLE. Створіть новий файл.
2. У вікні редактора коду запишіть команди: для введеня списку із дійсних чисел; за допомогою конструкції for та функції round опрацьовується список та округляє значення до цілого; виведіть список із цілих чисел на екран.

3. Збережіть програму у своїй папці із назвою Завдання_1. Протестуйте її.

Завдання 2 (виконайте самостійно).  Створіть проект, при роботі якого користувач вводить показники середнємісячної температури за рік, задача проекту вивести аналіз циз температур за наступними пунктами:
– кількість місяців в яких температура була нижче 0;
– максимальна та мінімальна температура;
– середнє значення температури за весь рік (округлити до десятків).
Для створення програми використайте функції max(), min() та sum().

Завдання 3. За допомогою модуля Tkinter створіть програму, яка буде аналізувати оцінки учня за такими пунктами: найбільший та найменший бал, середній бал та підраховувати кількість оцінок початкового, середнього, достатнього та високого рівня (у вигляді таблиці)
Алгоритм роботи
1. Відкрийте середовище програмуванн IDLE. Створіть новий файл.
2. Імпортуйте модуль Tkinter.
3. Створіть нове вікно та текстове поле, а також додайте напис із текстом «Введіть список оцінок», всі розміри та арибути використайте на свій розсуд. (В цьому випадку назву напису можна не задавати, так як до нього не буде звернень.)
4. Створіть написи, в яких будуть на виході міститися вихідні дані, а також кнопку для запусу алгоритму підрахунку результатів.

5. Створіть таблицю. Для цього застосуйте метод grid()
frame=Frame(Window)
frame.place(x=70, y=290
Label(frame, text=”H”,width=5).grid(row=0, column=0)
Label(frame, text=”C”,width=5).grid(row=0, column=1)
Label(frame, text=”Д”,width=5).grid(row=0, column=2)
Label(frame, text=”В”,width=5).grid(row=0, column=3)
n_label=Label(frame, text=””,width=5)
n_label.grid(row=1, column=0)
s_label=Label(frame, text=””,width=5)
s_label.grid(row=1, column=1)
d_label=Label(frame, text=””,width=5)
d_label.grid(row=1, column=2)
v_label=Label(frame, text=””,width=5)
v_label.grid(row=1, column=3)

6. Для аналізу оцінок створіть подію та функцію з таким алгоритмом
def fun (event):
          a=[int(i) for i in text.get(‘1.0’, END).split()]
          maximum[“text”]= “Максимальний бал: “+str(max(a))
          minimum[“text”]= “Мінімальний бал: “+str(min(a))
          serednii[“text”]= “Середній бал: “+str(round(sum(a)/len(a), 1))
          n=0
          s=0
          d=0
          v=0
          for i in a:
                    if i<=3:
                              n=n+1
                    elif i>3 and i<=6:
                              s=s+1
                    elif i>6 and i<=9:
                              d=d+1
                    else:
                              v=v+1
          n_label[“text”]=n
          s_label[“text”]=s
          d_label[“text”]=d
          v_label[“text”]=v
but.bind(“<Button-1>”, fun)

7. Збережіть програму у своїй папці із назвою Завдання_3. Протестуйте її.

Результат роботи програми з використанням віджету Frame (рамка)

ІІІ. Домашнє завдання: опрацювати конспект, підготуватися до практичної роботи