Попередня сторінка: Списки — змінювані послідовності
Наступна сторінка: Функції та методи опрацювання списків
Уявіть себе бухгалтером підприємства, який аналізує відомість заробітної платні співробітників за місяць . Які задачі можуть виникнути під час такого аналізу? Визначення загальної суми виплат, середньої зарплатні, найбільшого значення — ці та багато інших прикладних задач потребують опрацювання сукупностей значень, тобто списків. Розглянемо основні типи задач опрацювання елементів списку:
• задачі на зміну значень елементів списку;
• задачі на пошук елемента із заданою властивістю;
• задачі на знаходження суми (добутку) елементів списку. Опрацювання елементів списку виконується в циклі, де параметр
циклу послідовно набуває значень елементів списку або їх індексів .
Перебір елементів списку
Перебрати елементи списку можна двома способами (розглянемо їх на прикладі виведення списку на екран):
1 |
Послідовно звертатися до елементів за їх індексами. У такому випадку потрібно знати кількість елементів у списку (функція len()) |
|
2 |
Перебрати всі наявні в списку елементи |
Між цими способами є суттєва відмінність: лише звернення за індексом дозволяє змінювати значення елементів списку (див . далі) .
Опрацювання елементів списку
Розглянемо основні типи задач опрацювання даних, що містяться у списках, детальніше
Заміна значень усіх елементів списку
Алгоритм розв’язування задачі: послідовно перебрати всі елементи списку й значення чергового елемента змінити за заданим правилом (змінити знак на протилежний, збільшити на певну величину тощо)
Алгоритм розв’язування задачі: послідовно перебрати всі елементи списку; якщо черговий елемент або його індекс відповідає деякій умові, його значення змінити за певним правилом .
Визначення кількості елементів списку із заданою властивістю
Алгоритм розв’язування задачі: присвоїти змінній-лічильнику значення 0; у циклі перебрати всі елементи списку; якщо черговий елемент відповідає деякій умові, то значення лічильника збільшити на 1 .
На телевізійному шоу талантів глядачі голосують за 5 учасників, надсилаючи SMS-повідомлення з номером учасника . Складемо програму для визначення переможця шоу на основі 10 надісланих SMS-повідомлень .
Для розв’язування задачі створимо список show, до якого занесемо номери учасників, зазначених у SMS-повідомленнях. Створимо додатковий список win із 5 елементів — за числом учасників . У (і - 1)-му елементі списку win будемо зберігати інформацію про те, скільки разів зустрівся номер учасника в списку show (рис. 7.1) .
Алгоритм визначення переможця: припустити, що найбільшим є k = win[0], після чого перебрати елементи списку з індексами від 1 до 4; якщо черговий елемент win[i] > k, то k присвоїти win[i] і запам’ятати індекс і у змінній n.
Знаходження суми (добутку) елементів списку
Алгоритм розв’язування задачі: зробити початкове значення суми рівним 0 (значення добутку рівним 1); в циклі перебрати всі елементи списку і значення чергового елемента додати до значення суми (або помножити на нього значення добутку) .
Знаходження суми (добутку) елементів із заданою властивістю
Алгоритм розв’язування задачі: зробити початкове значення суми рівним 0 (значення добутку рівним 1); у циклі перебрати всі елементи списку; якщо черговий елемент відповідає деякій умові, додати його значення до значення суми (або помножити на нього значення добутку) .
Деякі типові алгоритми опрацювання списків реалізовані у вигляді методів класу list (про це далі) .
Питання для самоперевірки
1. Поясніть відмінності між двома способами перебору елементів списку:
а) for i in range(len(a)): print(a[i]) б) for i in a: print(i)
2. Поясніть алгоритм заміни значень елементів списку за певним правилом
3. Поясніть алгоритм визначення кількості елементів списку із заданою властивістю .
4. Поясніть алгоритм обчислення суми елементів списку.
5. Дано список a = [2, -7, -1, 8, 4] . Що буде надруковано після виконання наведених фрагментів коду?
6. На складі зберігається 20 видів товарів . До списку а занесено кількість одиниць кожного товару, до списку b — ціни цих товарів . Обчисліть загальну вартість товарів на складі .
Вправа 7
Скласти ігрову програму Відгадай столицю . Занести назви країн до списку а, назви їх столиць — до списку b. Програма має почергово запитувати назву столиці кожної країни зі списку а і перевіряти правильність відповіді; після трьох помилок припиняти роботу, видаючи повідомлення про результат.
2) Створіть змінну-лічильник помилок: k = 0 .
3) Змінній і для збереження індексу поточного елемента надайте значення 0 .
Запитання користувачеві пропонуються доти, поки не закінчився список країн (і < 5) і користувач не припустився третьої помилки (k < 3) .
4) Напишіть оператор розгалуження, в якому в залежності від значення k видається відповідне повідомлення:
5) Додайте до списків а і b ще декілька країн і їхніх столиць . Внесіть до програмного коду відповідні зміни .
6) Збережіть програму у файлі з іменем Vprava7.
Випробуйте програму, проаналізуйте результати її роботи
Комп’ютерне тестування
Виконайте тестове завдання 7 із автоматичною перевіркою результату
Це матеріал з підручника Інформатика за 7 клас Бондаренко
Наступна сторінка: Функції та методи опрацювання списків