3.1. Одновимірні масиви. Списки в python, їх уведення та виведення

Зміст

ПРИГАДАЙТЕ

Чи траплялися вам упорядковані набори даних? Якщо так, наведіть приклади.

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

У чому зручність у використанні таких наборів даних?

Зручність використання впорядкованих наборів даних полягає в тому, що кожен елемент має свій унікальний порядковий номер (індекс), завдяки чому можна швидко знайти, змінити чи видалити конкретне значення. Крім того, упорядкованість дозволяє автоматизувати роботу з великою кількістю даних за допомогою циклів, роблячи код програми коротким та зрозумілим.

Який загальний вигляд і як виконується команда циклу з лічильником у мові програмування Python?

Загальний вигляд команди циклу з лічильником у мові програмування Python є таким:

for i in range(n):
    команди тіла циклу

Виконання цієї команди відбувається так: змінна-лічильник $i$ послідовно набуває цілих значень від $0$ до $n – 1$, де $n$ — задана кількість повторень. Для кожного значення змінної $i$ один раз виконується послідовність команд, які записані в тілі циклу з відступом.

Що таке списки? Де вони використовуються?

Список у мові програмування Python — це впорядкована послідовність елементів, які можуть мати різні типи даних та кількість яких може динамічно змінюватися під час виконання програми. Списки використовуються для реалізації одновимірних масивів даних, збереження послідовностей значень (наприклад, списків оцінок, температур чи назв об’єктів), а також для автоматизації введення, збереження та групового опрацювання великої кількості змінних.

Які види списків ви знаєте? Чим вони відрізняються один від одного?

В інформатиці виділяють кілька класифікацій списків:

  1. За способом подання у текстових та вебдокументах:
  • Марковані (невпорядковані) списки — елементи позначаються спеціальними графічними маркерами (символами), а їхня послідовність не є принциповою.
  • Нумеровані (упорядковані) списки — елементи позначаються послідовними цифрами або літерами для відображення чіткої черговості.
  • Багаторівневі списки — містять вкладені списки різних рівнів структурованості.
  1. За впорядкованістю елементів у структурах даних (програмуванні):
  • Упорядковані списки — елементи в них відсортовані за зростанням або спаданням, що дозволяє здійснювати швидкий пошук даних (наприклад, методом бінарного пошуку).
  • Невпорядковані списки — елементи розташовані в довільному порядку, тому для пошуку конкретного значення зазвичай потрібно послідовно перебирати всі елементи списку.

ПРИГАДАЙТЕ

У списках яких видів зручніше і швидше виконувати пошук потрібних даних?

Пошук потрібних даних зручніше і швидше виконувати у впорядкованих (відсортованих за певним критерієм) або нумерованих списках, оскільки це дозволяє застосовувати швидкі методи пошуку та полегшує зорове орієнтування.

ДАЙТЕ ВІДПОВІДІ НА ЗАПИТАННЯ

1. Що таке одновимірний масив?

Одновимірний масив — це упорядкований за номерами набір змінних одного типу.

2. Із чого складається ім’я елемента одновимірного масиву?

Ім’я елемента одновимірного масиву складається з імені цього масиву і порядкового номера (індексу) цього елемента в масиві, який узятий у квадратні дужки.

3. Що може використовуватись як номер елемента одновимірного масиву?

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

4. Якими способами можна ввести значення елементів списку з клавіатури?

Значення елементів списку з клавіатури можна ввести двома основними способами: по одному елементу (шляхом додавання введеного значення в кінець порожнього списку в циклі за допомогою методу append) або в один рядок через пропуск (із використанням комбінації функцій split, map та list).

ДАЙТЕ ВІДПОВІДІ НА ЗАПИТАННЯ

5. Якими способами можна вивести значення елементів списку?

Значення елементів списку в мові програмування Python можна вивести такими способами [4, 6]:

  • Вивести весь список у квадратних дужках із розділенням елементів комами за допомогою команди print(a).
  • Вивести значення одного конкретного елемента за його індексом за допомогою команди print(a[i]).
  • Вивести всі елементи списку в один рядок без квадратних дужок і ком, розділяючи їх пропусками, за допомогою команди print(*a).
  • Вивести елементи списку поелементно у стовпчик або записати їх у файл за допомогою циклу for.

6. Яка функція використовується для визначення кількості елементів списку?

Для визначення кількості елементів списку використовується вбудована функція len().

7. Який метод використовується для додавання до списку нових елементів?

Для додавання нових елементів у кінець списку використовується метод append().

ОБГОВОРІТЬ І ЗРОБІТЬ ВИСНОВКИ

1. Для розв’язування яких фінансових, екологічних, спортивних задач можна використати одновимірні масиви?

Одновимірні масиви (списки) можна використовувати для розв’язування таких практичних задач [2, 10, 11]:

  • Фінансові задачі: збереження та аналіз сум вкладів клієнтів банку, обчислення щомісячного прибутку підприємства за рік, відстеження щоденних курсів валют протягом тижня [2, 10].
  • Екологічні задачі: збереження та аналіз показників середньодобової температури повітря протягом місяця, облік кількості опадів за кожен день декади для визначення середнього значення [2, 11].
  • Спортивні задачі: фіксація результатів забігу групи спортсменів для визначення найкращого результату, збереження балів оцінювання від різних суддів, ведення статистики забитих м’ячів командою у кожному матчі сезону.

2. Які переваги має використання одновимірного масиву перед використанням окремих змінних?

Використання одновимірного масиву замість окремих змінних має такі переваги [2, 3]:

  • Значно скорочує обсяг програмного коду завдяки можливості опрацювання елементів масиву в циклі.
  • Робить текст програми зрозумілішим, структурованішим та зручнішим для редагування [2, 3].
  • Позбавляє потреби створювати й записувати в коді велику кількість унікальних імен для кожної змінної окремо.
  • Дозволяє ефективно працювати з великими наборами даних, кількість елементів у яких заздалегідь невідома або може змінюватися під час виконання програми [2, 4].
  • Забезпечує простий і швидкий доступ до будь-якого значення за його порядковим номером (індексом).

ВИКОНАЙТЕ ЗАВДАННЯ

1. Виконайте в зошиті наведений фрагмент проєкту для списку, значеннями елементів якого є числа 2; -2; 3; 0,25; -4: dob = 1 for i in range(5): dob = dob * a[i] Яке значення змінної dob після завершення його виконання? Сформулюйте умову задачі, яку можна розв’язати, використовуючи цей фрагмент проєкту.

Відомо:

  • Список елементів:
    $a = [2, -2, 3, 0{,}25, -4]$
  • Фрагмент коду:
    dob = 1
    for i in range(5):
    dob = dob * a[i]

Знайти:

  • Кінцеве значення змінної dob — ?
  • Умова задачі — ?

Розв’язання:

Для знаходження значення змінної dob виконаємо покрокове трасування циклу для кожного індексу $i$ від $0$ до $4$:

Початкове значення:

$$dob = 1$$

При $i = 0$:

$$dob = 1 \cdot a[0] = 1 \cdot 2 = 2$$

При $i = 1$:

$$dob = 2 \cdot a[1] = 2 \cdot (-2) = -4$$

При $i = 2$:

$$dob = -4 \cdot a[2] = -4 \cdot 3 = -12$$

При $i = 3$:

$$dob = -12 \cdot a[3] = -12 \cdot 0{,}25 = -3$$

При $i = 4$:

$$dob = -3 \cdot a[4] = -3 \cdot (-4) = 12$$

Сформульована умова задачі: «Знайти добуток елементів списку, який складається з 5 чисел».

Відповідь: Кінцеве значення змінної dob дорівнює 12. Умова задачі: «Знайти добуток елементів списку, який складається з 5 чисел».

2. Виконайте в зошиті наведений фрагмент проєкту для списку, значеннями елементів якого є числа 0,5; -3; 2; -1,6: suma = 0 for i in range(4): suma = suma + a[i]a[i] Яке значення змінної suma після завершення його виконання? Сформулюйте умову задачі, яку можна розв’язати, використовуючи цей фрагмент проєкту.

Відомо:

  • Список елементів:
    $a = [0{,}5, -3, 2, -1{,}6]$
  • Фрагмент коду:
    suma = 0
    for i in range(4):
    suma = suma + a[i]*a[i]

Знайти:

  • Кінцеве значення змінної suma — ?
  • Умова задачі — ?

Розв’язання:

Виконаємо покрокове трасування циклу для кожного індексу $i$ від $0$ до $3$:

Початкове значення:

$$suma = 0$$

При $i = 0$:

$$suma = 0 + a[0] \cdot a[0] = 0 + 0{,}5 \cdot 0{,}5 = 0{,}25$$

При $i = 1$:

$$suma = 0{,}25 + a[1] \cdot a[1] = 0{,}25 + (-3) \cdot (-3) = 0{,}25 + 9 = 9{,}25$$

При $i = 2$:

$$suma = 9{,}25 + a[2] \cdot a[2] = 9{,}25 + 2 \cdot 2 = 9{,}25 + 4 = 13{,}25$$

При $i = 3$:

$$suma = 13{,}25 + a[3] \cdot a[3] = 13{,}25 + (-1{,}6) \cdot (-1{,}6) = 13{,}25 + 2{,}56 = 15{,}81$$

Сформульована умова задачі: «Знайти суму квадратів елементів списку, який складається з 4 чисел».

Відповідь: Кінцеве значення змінної suma дорівнює 15,81. Умова задачі: «Знайти суму квадратів елементів списку, який складається з 4 чисел».

3. Виконайте в зошиті наведений фрагмент проєкту для списку, значеннями елементів якого є числа 0,5; -3; 2; -1,6: suma = 0 for i in range(4): if a[i] > 0: suma = suma + a[i] Яке значення змінної suma після завершення його виконання? Сформулюйте умову задачі, яку можна розв’язати, використовуючи цей фрагмент проєкту.

Відомо:

  • Список елементів:
    $a = [0{,}5, -3, 2, -1{,}6]$
  • Фрагмент коду:
    suma = 0
    for i in range(4):
    if a[i] > 0:
    suma = suma + a[i]

Знайти:

  • Кінцеве значення змінної suma — ?
  • Умова задачі — ?

Розв’язання:

Виконаємо покрокове трасування циклу для кожного індексу $i$ від $0$ до $3$ з перевіркою умови $a[i] > 0$:

Початкове значення:

$$suma = 0$$

При $i = 0$:
Оскільки $a[0] = 0{,}5 > 0$ є істинним:

$$suma = 0 + a[0] = 0 + 0{,}5 = 0{,}5$$

При $i = 1$:
Оскільки $a[1] = -3 > 0$ є хибним, значення suma не змінюється:

$$suma = 0{,}5$$

При $i = 2$:
Оскільки $a[2] = 2 > 0$ є істинним:

$$suma = 0{,}5 + a[2] = 0{,}5 + 2 = 2{,}5$$

При $i = 3$:
Оскільки $a[3] = -1{,}6 > 0$ є хибним, значення suma не змінюється:

$$suma = 2{,}5$$

Сформульована умова задачі: «Знайти суму додатних елементів списку, який складається з 4 чисел».

Відповідь: Кінцеве значення змінної suma дорівнює 2,5. Умова задачі: «Знайти суму додатних елементів списку, який складається з 4 чисел».

4. Створіть проєкт, у якому створюється список вкладів десяти клієнтів у банк. Через рік вклад кожного збільшується на 20 %. Виведіть суми, які можуть забрати ці клієнти через рік. Використайте спосіб уведення початкових сум у список по одному в рядку. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.1.4.

Для реалізації цього проєкту мовою програмування Python розроблено такий код:

# Створення порожнього списку для вкладів
a = []

# Введення початкових сум по одному в рядку
for i in range(10):
    x = float(input(f"Уведіть вклад {i+1}-го клієнта > "))
    a.append(x)

# Збільшення кожного вкладу на 20 %
for i in range(10):
    a[i] = a[i] * 1.20

# Виведення сум, які клієнти отримають через рік
print("Суми, які можуть забрати клієнти через рік:")
for i in range(10):
    print(f"Клієнт {i+1}: {a[i]}")

Проєкт необхідно зберегти у вашій папці у файлі з іменем завдання 3.1.4.py.

5. Створіть проєкт, у якому створюється список вкладів десяти клієнтів у банк. Через рік вклад кожного збільшується на p %. Виведіть прибутки, які отримають ці клієнти, якщо заберуть гроші через рік. Використайте спосіб уведення початкових сум у список в одному рядку через пропуски. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.1.5.

Для реалізації цього проєкту мовою програмування Python розроблено такий код:

# Введення відсотка p
p = float(input("Уведіть відсоток p > "))

# Введення початкових сум вкладів десяти клієнтів в одному рядку через пропуск
a = list(map(float, input("Уведіть 10 початкових сум вкладів через пропуск > ").split()))

# Створення списку для збереження значень прибутків
profits = []

# Обчислення прибутків (різниця між кінцевою сумою та початковою сумою)
for i in range(10):
    profit = a[i] * p / 100
    profits.append(profit)

# Виведення прибутків клієнтів через рік
print("Прибутки, які отримають клієнти через рік:")
for i in range(10):
    print(f"Клієнт {i+1}: {profits[i]}")

Проєкт необхідно зберегти у вашій папці у файлі з іменем завдання 3.1.5.py.

6. Створіть проєкт, у якому створюються два списки з кількостями опадів у місті Житомир за кожен день першої декади двох місяців. Визначте середню кількість опадів у Житомирі за перші 10 днів кожного із цих місяців. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.1.6.

Проєкт мовою програмування Python для визначення середньої кількості опадів за перші 10 днів двох місяців:

# Введення кількості опадів за кожен день першої декади (10 днів) для двох місяців
decada_month1 = list(map(float, input("Введіть кількість опадів за 10 днів 1-го місяця (через пропуск): ").split()))
decada_month2 = list(map(float, input("Введіть кількість опадів за 10 днів 2-го місяця (через пропуск): ").split()))

# Обчислення середньої кількості опадів
average_month1 = sum(decada_month1) / len(decada_month1)
average_month2 = sum(decada_month2) / len(decada_month2)

# Виведення результатів обчислень
print(f"Середня кількість опадів за першу декаду 1-го місяця: {average_month1} мм")
print(f"Середня кількість опадів за першу декаду 2-го місяця: {average_month2} мм")

7. Робітник протягом місяця виготовляв деталі шести видів. Відомо, скільки деталей кожного виду виготовив робітник і скільки гривень йому платять за виготовлення 1 деталі кожного виду. Створіть проєкт, у якому визначається, скільки гривень отримає робітник за виготовлення деталей кожного виду. Використайте три списки: для кількостей деталей кожного із 6 видів, для суми оплати за 1 деталь кожного виду і для сум за всі деталі кожного виду. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.1.7.

Проєкт мовою програмування Python для обчислення вартості виготовлених деталей кожного виду:

# Створення трьох списків відповідно до умов завдання
count_details = []      # Кількість деталей кожного з 6 видів
price_per_detail = []   # Оплата за 1 деталь кожного виду
total_payment = []      # Сума за всі деталі кожного виду

# Введення даних користувачем
print("Введіть кількість деталей для кожного з 6 видів:")
for i in range(6):
    count_details.append(int(input(f"Кількість деталей {i+1}-го виду: ")))

print("\nВведіть оплату за 1 деталь кожного з 6 видів (у гривнях):")
for i in range(6):
    price_per_detail.append(float(input(f"Вартість 1 деталі {i+1}-го виду: ")))

# Обчислення вартості виготовлених деталей та додавання результатів у третій список
for i in range(6):
    total_payment.append(count_details[i] * price_per_detail[i])

# Виведення отриманих результатів
print("\nСума отриманої оплати за кожний вид деталей:")
for i in range(6):
    print(f"Деталі {i+1}-го виду: {total_payment[i]} грн")

8. Експериментально встановлено, що кількість людей, серед яких поширюється повідомлення в мережі, обчислюється за формулою n = 5 * i + 2, де i – номер хвилини поширення. Створіть проєкт для визначення, серед скількох людей поширюється повідомлення за кожну з перших 20 хвилин. Збережіть проєкт у вашій папці у файлі з іменем завдання 3.1.8.

Проєкт мовою програмування Python для розрахунку кількості людей за формулою:

$n = 5 \cdot i + 2$

# Список для збереження кількості людей за кожну з перших 20 хвилин
people_count = []

# Цикл для розрахунку показників для кожної хвилини від 1 до 20
for i in range(1, 21):
    n = 5 * i + 2
    people_count.append(n)
    print(f"Хвилина {i}: повідомлення поширюється серед {n} людей")

ГОТУЄМОСЬ ДО ВИВЧЕННЯ НОВОГО МАТЕРІАЛУ

1. Які функції ви використовували в табличному процесорі Excel?

У табличному процесорі Excel використовувалися такі вбудовані функції: СУМ (SUM) для знаходження суми чисел у діапазоні клітинок, СРЗНАЧ (AVERAGE) для розрахунку середнього арифметичного значення, МАКС (MAX) та МІН (MIN) для пошуку найбільшого та найменшого значень відповідно, КІЛЬКІСТЬ (COUNT) для підрахунку кількості числових значень, а також логічна функція ЯКЩО (IF) для перевірки виконання умов.

2. Що таке функція у проєкті мовою програмування Python? Для чого їх використовують?

Функція у проєкті мовою програмування Python — це іменована та логічно завершена частина коду, яку можна викликати на виконання в будь-якому місці програми за її іменем. Функції використовують для структурування коду, уникнення повторення однакових фрагментів програми (дублювання коду), полегшення пошуку помилок та забезпечення можливості багаторазового використання коду для різних вхідних даних.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Прокрутка до верху