Опрацювання масивів (списків) в Python

Про матеріал
Матеріал містить практичні завдання, які поділяються на дві групи: знайти помилку в коді та написати код програми. Також додаються готові розв'язки завдань та довідковий матеріал для учнів, який можна використати при виконанні завдань
Перегляд файлу

ОПРАЦЮВАННЯ МАСИВІВ PYTHON

 

 

 

Завдання 1. Знаходження суми парних чисел

Умова: Програма має створити список із 5 чисел, які вводить користувач, а потім порахувати та вивести суму лише парних елементів.

 

Код із помилками:

numbers = []

for i in range(5):

    val = input("Введіть число: ")

    numbers.append(val)

suma = 0

for x in numbers:

    if x / 2 == 0: # Тут помилка

        suma = suma + x

print("Сума парних:", suma)

 

Завдання 2. Пошук елементів, більших за середнє

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

 

Код із помилками:

a = [10, 20, 30, 40, 50]

# Рахуємо середнє

serednie = sum(a) / len(a)

print("Середнє:", serednie)

# Шукаємо числа

for i in range(len(a)):

    if i > serednie: # Тут помилка

        print("Число більше за середнє:", a) # І тут помилка

 

Завдання 3. Заміна від'ємних чисел нулями

Умова: Програма отримує список чисел. Усі від’ємні числа потрібно замінити на 0 і вивести оновлений список.

 

Код із помилками:

items = [15, -3, 8, -22, 0, 7]

for x in items:

    if x < 0:

        x = 0 # Тут логічна помилка

print("Оновлений список:", items)


Для вчителя:

 

1. Що мають знайти учні:

  1. Тип даних: input() повертає рядок, тому val треба перетворити на int().
  2. Логіка перевірки парності: Замість x / 2 == 0 (ділення) треба використовувати x % 2 == 0 (остача від ділення).
  3. Помилка типів у циклі: Оскільки numbers містить рядки, додавання suma + x викличе помилку TypeError.

 

2. Що мають знайти учні:

  1. Помилка індексу: У першій умові if i > serednie порівнюється індекс (0, 1, 2...), а не саме число зі списку. Правильно: if a[i] > serednie:.
  2. Помилка виведення: Команда print(a) виведе весь список 5 разів. Правильно: print(a[i]).

 

3.  Що мають знайти учні:

  • Логіка ітерації: Змінна x у циклі for x in items — це лише тимчасова копія значення. Зміна x = 0 не змінює саме число всередині списку items.
  • Виправлення: Потрібно використовувати цикл через індекси for i in range(len(items)) і звертатися до items[i] = 0.


Картка №1. Метеорологічна лабораторія

Сюжет: Ви працюєте аналітиком на метеостанції. У вас є дані про температуру повітря за останні 10 днів (список temps).
Завдання:

  1. Напишіть програму, яка обчислює середню температуру за цей період.
  2. Порахуйте, скільки разів температура опускалася нижче 0°C.
    Вхідні дані: temps = [3, -2, 0, 5, -4, 1, 8, -1, -3, 2]
    Результат: Середня температура: ...; Кількість морозних днів: ...

Картка №2. Бонусна система супермаркету

Сюжет: Магазин нараховує кешбек 5% на покупки, сума яких перевищує 500 грн. У списку purchases зафіксовано суми чеків покупця за місяць.
Завдання:

  1. Створіть новий список cashback, куди потраплять лише суми кешбеку для чеків > 500 грн.
  2. Обчисліть загальну суму накопиченого кешбеку.
    Вхідні дані: purchases = [120, 650, 480, 1200, 300, 890]
    Результат: Список кешбеків: ...; Загальна сума: ...

Картка №3. Відбір у десантну школу

Сюжет: Для навчання за спеціальністю "парашутист" допускаються курсанти, зріст яких не менше 170 см і не більше 190 см.
Завдання:

  1. Проаналізуйте список зросту курсантів cadets.
  2. Виведіть на екран номери (індекси) тих курсантів, які НЕ проходять за зростом.
    Вхідні дані: cadets = [165, 172, 195, 180, 188, 169]
    Результат: Курсанти №... не підходять.

Картка №4. Контроль якості (Автоматизація)

Сюжет: На конвеєрі перевіряють вагу упаковок чаю. Стандарт — 100 г. Упаковка вважається бракованою, якщо її вага менша за 98 г.
Завдання:

  1. Напишіть програму, яка замінює всі браковані значення в списку на число 0 (сигнал для робота-сортувальника).
  2. Виведіть оновлений список.
    Вхідні дані: weights = [100, 97, 101, 99, 95, 100]
    Результат: Оновлений список: [100, 0, 101, 99, 0, 100]

Картка №5. Спортивні рекорди

Сюжет: Спортсмен здійснив 6 стрибків у довжину. Результати записані в метрах.
Завдання:

  1. Знайдіть найкращий результат (максимум) та найгірший (мінімум).
  2. Обчисліть різницю між найкращим та найгіршим стрибком (амплітуду).
    Вхідні дані: jumps = [5.2, 5.8, 4.9, 6.1, 5.7, 5.0]
    Результат: Найкращий: ...; Найгірший: ...; Різниця: ...

 

Шпаргалка: Робота зі списками (масивами) в Python

 

1. Створення списку:

 

numbers = [10, 20, 30] # Список із готовими даними

empty_list = []        # Порожній список

 

2. Основні функції для аналізу:

  • len(my_list) — повертає кількість елементів у списку.
  • sum(my_list) — обчислює суму всіх чисел у списку.
  • max(my_list) / min(my_list) — знаходить найбільше або найменше значення.

 

3. Додавання елементів:

  • my_list.append(значення) — додає новий елемент у кінець списку.
    • Приклад: team.append(185) — додасть зріст нового гравця до команди.

 

4. Доступ до елементів (Індексація):

  • Елементи нумеруються з нуля!
  • my_list[0] — перший елемент.
  • my_list[i] — елемент на позиції i.

 

5. Перебір елементів (Цикли):

 

Варіант А: Якщо треба просто перевірити кожне число (без зміни списку):

for x in my_list:

    if x > 100:

        print(x)

 

Варіант Б: Якщо треба змінити значення в списку або знайти номер (індекс) елемента:

for i in range(len(my_list)):

    if my_list[i] < 0:

        my_list[i] = 0  # Замінюємо від'ємне число на нуль

 

6. Корисна порада:
Щоб вивести результат красиво (з двома знаками після коми), використовуйте:
print(f"Сума: {total:.2f}")


Порада для виконання завдань:

Якщо в задачі просять знайти середнє арифметичне, пам'ятайте формулу:
середнє = sum(список) / len(список)

 

РОЗВ’ЯЗКИ

 

1. # Дані про температуру (список)

temps = [2.5, -1.2, 0.0, -3.5, 1.8, -0.5, 4.2]

# 1. Обчислюємо середню температуру

avg_temp = sum(temps) / len(temps)

# 2. Рахуємо кількість днів з морозом

frosty_days = 0

for t in temps:

    if t < 0:

        frosty_days += 1

print(f"Середня температура за тиждень: {avg_temp:.1f}°C")

print(f"Кількість морозних днів: {frosty_days}")

 

2. prices = [45.0, 120.0, 300.5, 80.0, 150.0]

total_sum = 0

for i in range(len(prices)):

    if prices[i] > 100:

        # Нараховуємо знижку 10%

        prices[i] = prices[i] * 0.9

        total_sum += prices[i]

print(f"Список цін після знижок: {prices}")

print(f"Загальна сума до сплати: {total_sum:.2f} грн")

 

3. students_heights = [170, 182, 195, 210, 176, 165, 188]

team = []

for height in students_heights:

    if 175 < height <= 200:

        team.append(height)

print(f"Кількість обраних гравців: {len(team)}")

print(f"Зріст гравців команди: {team}")

 

4. humidity_data = [45, 48, 52, 60, 58, 55, 50, 42]

# Використання вбудованих функцій

max_h = max(humidity_data)

min_h = min(humidity_data)

# Або ручний пошук (алгоритмічний підхід)

current_max = humidity_data[0]

for value in humidity_data:

    if value > current_max:

        current_max = value

print(f"Максимальна вологість: {max_h}%")

print(f"Мінімальна вологість: {min_h}%")

print(f"Амплітуда коливань: {max_h - min_h}%")

 

 

5. weights = [500, 498, 507, 494, 501, 505, 490]

broken_count = 0

print("Браковані деталі знайдені на позиціях:")

for i in range(len(weights)):

    if weights[i] < 495 or weights[i] > 505:

        print(f"Деталь №{i+1} (вага: {weights[i]}г)")

        broken_count += 1

print(f"Всього браку: {broken_count} шт.")

 

 

Методична порада:

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

Для швидкої перевірки коду ви можете скористатися онлайн-редактором Online Python Tutor, який візуалізує крок за кроком, як змінюється масив у пам'яті.

 

Поради для вчителя:

  1.  Попросіть учнів змінити умови задач. Наприклад, у задачі №2 додати умову: "якщо сума чека більше 1000 грн — додаткова знижка 50 грн".
  2.  Запропонуйте реалізувати задачу №4 (максимум) без використання вбудованої функції max(), а через цикл.
  3. Дайте готовий код задачі №3, але зі зміненим знаком

 if 175 > height і запитайте, чому команда виявилася порожньою.

 

docx
Додано
10 лютого
Переглядів
11
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку