Інформація про новину
  • Переглядів: 1290
  • Дата: 2-02-2022, 09:03
2-02-2022, 09:03

35. Поняття двовимірного масиву. Вкладені списки в Python

Категорія: Інформатика





Попередня сторінка:  34. Візуалізація елементів табличної в...
Наступна сторінка:   36. Опрацювання двовимірних масивів да...

Списки корисні для опрацювання таблиць, які містять один рядок даних, наприклад таблиця опадів по місяцях за один рік. А якщо потрібно проаналізувати кількість опадів по місяцях за кілька років? Під час розв’язування багатьох задач доводиться працювати з таблицями, у яких кілька рядків і кілька стовпців. Як правило, дані в комірках таблиці належать до одного типу. Такі таблиці прийнято називати двовимірними масивами. У мові Python для опрацювання таких таблиць використовуються вкладені списки, тобто списки, кожен елемент якого у свою чергу є списком значень.

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

ПРИКЛАД 1. Збережемо дані таблиці, поданої на рис. 35.1, у змінній а.

Кожний елемент списку а також є списком, що містить дані з одного рядка таблиці. Довжина списку len(a) = 3. Звернутися до вкладеного списку (рядка таблиці) можна за його індексом:

Для перебору рядків списку використовується цикл for. Нехай

Можна перебрати індекси вкладених списків — елементів списку

Можна перебрати всі наявні в списку елементи — рядки таблиці.



При використанні обох варіантів циклу в консоль буде виведено:

Положення окремого елемента в таблиці визначається 2 індексами — номером рядка і номером стовпця, отже, щоб звернутися до елемента у вкладеному списку, слід указати два індекси.

Елемент, розташований на перетині і-го рядка і j-го стовпця масиву А, позначають А[і] Ш.

Запам’ятайте, що у двовимірних масивах перший індекс завжди вказує на номер рядка, а другий — на номер стовпця.

Елементи списку а з прикладу 1 мають такі значення:

Г оловну діагональ масиву утворюють елементи, для яких i == j. Послідовно отримати доступ до всіх елементів двовимірного масиву можна за допомогою вкладених циклів: зовнішній цикл перебирає вкладені списки (рядки таблиці), внутрішній цикл перебирає елементи рядка.

ПРИКЛАД 2. Виведемо значення списку а на екран порядково, додаючи пробіл між елементами. Зовнішній цикл for і перебирає індекси елементів списку а — рядків двовимірного масиву.

Внутрішній цикл for j перебирає індекси елементів списку а[і] (і-го рядка масиву). Згадаємо, що параметр end = ’ ’ методу print() потрібен, щоб після виведення курсор залишився в тому самому рядку.

Оператор print() із порожнім списком виведення переводить курсор на наступний рядок.

ПРИКЛАД 3. Щоб вивести в консоль значення двовимірного масиву b порядково, можна перебирати всі наявні у зовнішньому списку рядки та у внутрішньому циклі — всі наявні у вкладених списках елементи:

Створення вкладених списків

Нехай потрібно створити двовимірний масив для збереження даних прямокутної таблиці, у якій n рядків і m стовпців, і заповнити його нулями. Це можна зробити в такий спосіб: створити порожній список, потім додати до нього n елементів — рядків масиву.

Іншим способом створення двовимірного масиву є використання генератора. Список [0]*m заново генерується для заповнення чергового елемента списку а.

Введення елементів двовимірного масиву

Щоб створити двовимірний масив із n рядків та m стовпців, уводячи значення елементів масиву з клавіатури, слід n разів повторити дії:

1) увести рядок row, що містить m чисел, відокремлених пробілами, і розбити рядок row функцією split() на список;

2) кожний елемент row[i] рядка row перетворити на числовий тип;

3) рядок row додати до списку а.

# Кількість рядків масиву

# Створюється порожній список

ПРИКЛАД 4. Заповнення двовимірного масиву з 3 рядків та 4 стовпців випадковими числами:

# Додавання чергового елемента до і-го

рядка

ПРИКЛАД 5. Задання значень елементів двовимірного масиву за певною формулою наявне у випадках, коли значення елемента залежить від його індексів. Нехай кожний елемент масиву 3 х 4 дорівнює більшому з його індексів:

ПРИКЛАД 6. Заповнити двовимірний масив 5 х 5 у такий спосіб: елементам головної діагоналі присвоїти значення 1, елементам, що розташовані вище головної діагоналі, — значення 2, елементам, що розташовані нижче головної діагоналі, — значення 0.

Питання для самоперевірки

1. Назвіть кількість рядків і кількість стовпців у двовимірному масиві, для збереження якого створено такий вкладений список:

2. Збережіть дані таблиці, поданої на рисунку, у змінній mas.

3. Запишіть фрагмент коду, призначений для введення значень двовимірного масиву з 5 рядків та 5 стовпців із клавіатури і збереження значень елементів масиву у вкладеному списку.

4. Створіть вкладений список А для збереження значень двовимірного масиву з 4 рядків та 6 стовпців, елементами якого є випадкові числа.

5. Запишіть оператори виведення значень масиву А на екран.

6. Дані з таблиці занесені до вкладеного списку а:

Знайдіть значення змінної х після виконання фрагмента коду:

Вправа 35

Створити програму для виконання завдання.

Завдання. Територіальна громада ухвалила рішення про здавання в оренду частини території, що має форму прямокутника розміром 5 х 5 км. Вартість оренди кожної квадратної ділянки 1 х 1 км була визначена з урахуванням локальних умов і занесена в таблицю а. З метою організації відкритого тендеру на оренду на вебсайті громади оприлюднено карту території. Напишіть програму, що дозволяє розрахувати вартість оренди для довільної прямокутної групи сусідніх ділянок, якщо протилежні кути групи ділянок розташовані в елементах таблиці з індексами (і1, j1), (i2, j2).

1) Створіть Python file із назвою Оренда. Завантажте модулі tkinter, random. Створіть вікно програми tk із заголовком Вартість оренди. Заверште програму оператором tk.mainloop().

2) Створіть двовимірний масив об’єктів класу Label, який буде відображати карту території.

3) Опишіть функцію output(), призначену для виведення значень елементів масиву а до елементів масиву list_b.

4) Заповніть масив а розміром 5 х 5 випадковими числами в діапазоні (1, 10) і запишіть оператор виклику функції output().

5) Додайте до вікна напис Координати верхнього лівого кута і створіть 2 об’єкти класу Entry для введення індексів ділянки, що знаходиться у лівому верхньому куті групи ділянок.

Додайте до вікна напис Координати нижнього правого кута і

створіть 2 об’єкти класу Entry для введення індексів ділянки, що знаходиться у правому нижньому куті групи ділянок.

Додайте об’єкт envart класу Entry для виведення загальної вартості оренди визначеної групи ділянок.

6) Створіть командну кнопку — об’єкт but класу Button:

Опишіть функцію but_dick() — обробник події Натискання на кнопку.

Випробуйте роботу програми.

Комп’ютерне тестування

Виконайте тестове завдання 35 з автоматичною перевіркою результату.

Практична робота 11. РОБОТА З ДВОВИМІРНИМИ МАСИВАМИ У ПРОГРАМІ З ГРАФІЧНИМ ІНТЕРФЕЙСОМ

Завдання: запрограмувати введення з клавіатури і виведення значень двовимірного масиву за допомогою графічних компонентів.

Організувати заповнення двовимірного масиву а з 4 рядків та 4 стовпців за такими правилами:

Обладнання: комп’ютер із середовищем програмування PyCharm.

Хід роботи

Під час роботи з комп ’ютером дотримуйтесь правил безпеки.

1. Створіть Python file із назвою Масив. Створіть вікно програми tk із заголовком Масив (рис. 1). Заверште програму оператором tk.mainloop().

2. За допомогою генератора списків створіть вкладений список а розміром 4 х 4 і заповніть масив нулями.

3. Створіть двовимірний масив об’єктів класу Entry:

# Об’єкт класу Entry

# Додаємо об’єкт en до і-го рядка масиву

list_en

4. Додайте до вікна програми віджет класу Label для виведення тексту Після змін натисни Enter.

5. Запишіть оператор виклику для об’єкта tk методу bind() для обробки натискання клавіші Enter.

6. Опишіть функцію read(), призначену для зчитування значень із текстових полів масиву list_en і занесення їх до масиву а.

7. Опишіть функцію output(), призначену для виведення значень

елементів масиву а до полів елементів масиву list_en.

8. Створіть командну кнопку Ь1 із заголовком Завдання 1.

9. Опишіть функцію-обробник події b1_click(), призначену для виконання завдання № 1.

# Виклик функції, призначеної для виведення значень елементів масиву а до полів елементів масиву list_en

10. Створіть командну кнопку Ь2 із заголовком Завдання 2, атрибуту command надайте значення b2_click.

11. Опишіть функцію — обробник події b2_dick(), призначену для виконання завдання № 2.

12. Створіть командну кнопку Ь3 із заголовком Завдання 3, опишіть функцію — обробник події b3_dick(), призначену для виконання завдання № 3.

Зробіть висновок: як організувати введення і виведення елементів двовимірного масиву.

 

 

Це матеріал з підручника Інформатика 9 клас Бондаренко 2022

 




Попередня сторінка:  34. Візуалізація елементів табличної в...
Наступна сторінка:   36. Опрацювання двовимірних масивів да...



^