Ітерація за індексами
У попередньому завданні ви передавали певну кількість елементів у функцію range(). Але що робити, якщо потрібно визначити кількість елементів динамічно? Саме тут стає важливою ітерація за індексами.
Ітерація за індексами — це базова техніка в Python, яка дозволяє отримувати доступ і змінювати елементи за їхніми позиціями у структурах даних, таких як списки або масиви. Вона особливо корисна для завдань, які потребують точного контролю над кожним елементом, наприклад, оновлення рівнів запасів або керування даними про продажі у продуктовому магазині.
Перегляньте, як Олексій демонструє, як ітерація за індексами може спростити операції на прикладі нашого магазину:
Ітерація за індексами корисна, коли потрібно отримати доступ до обох — індексу та значення кожного елемента у списку. Коли ми використовуємо range() разом із len(), ми поєднуємо дві функції для створення послідовності чисел, що відповідають індексам елементів списку. Цей метод особливо зручний у циклах, де потрібно отримати доступ або змінити елементи за їхньою позицією.
Наприклад, цей цикл for отримує індекс і значення кожного елемента у grocery_list:
12345678# List of grocery items grocery_list = ["Apples", "Bananas", "Carrots", "Cucumbers"] # Initialize a for loop to iterate over indexes for item in range(len(grocery_list)): print("Index:", item) print("Item:", grocery_list[item]) print("----") # Printing a divider line for clarity
Приклад застосування
Щоб застосувати знижку до списку цін, необхідно змінювати елементи списку безпосередньо. Використання простого циклу, такого як for cost in prices:, надає лише копію кожного елемента, а не посилання на сам елемент у списку. Зміни, зроблені таким чином, не вплинуть на оригінальний список.
Щоб безпосередньо оновити кожен елемент у списку prices, використовують range(len(prices)) для ітерації за індексами. Це дозволяє застосувати коефіцієнт знижки до кожного елемента:
12345678910111213# List of original prices of grocery items prices = [1.50, 2.00, 0.75, 3.25] # Discount factor (10% off each item) discount_factor = 0.10 # Iterate over the list of prices using range(len()) for cost in range(len(prices)): # Apply the discount by reducing the price prices[cost] -= prices[cost] * discount_factor print(f"New price of item {cost + 1}: ${prices[cost]}") print("Updated prices:", prices)
- Формула
prices[cost] -= prices[cost] * discount_factorеквівалентнаprices[cost] = prices[cost] - prices[cost] * discount_factor. Вона віднімає частину початкової ціни (визначену знижкою) від самої себе, фактично застосовуючи знижку; - Вираз
cost + 1у команді виводу коригує індекс так, щоб він починався з1, а не з0, що робить його зручнішим для користувача.
Цей метод гарантує, що початковий список prices оновлюється безпосередньо новими, зниженими цінами, і зміни одразу відображаються у програмі всюди, де використовується список prices.
Swipe to start coding
Знижка за позицією
Оновіть список prices, застосувавши різні відсотки знижки до кожного елемента залежно від його позиції у списку. Використовуйте ітерацію за індексами, щоб безпосередньо оновити оригінальний список prices.
-
Використайте цикл for з
range()іlen()для проходження по індексах спискуprices; -
Для кожного індексу застосуйте такі знижки та оновіть список:
- Індекс 0: знижка 10% (помножити на 0.9);
- Індекс 1: знижка 20% (помножити на 0.8);
- Індекс 2: знижка 15% (помножити на 0.85);
- Індекс 3: знижка 5% (помножити на 0.95);
-
Після оновлення кожної ціни виведіть рядок:
Updated price for item {index}: ${updated_price:.2f}; -
Використовуйте
.2fу вашому операторі print для форматування цін до 2 знаків після коми (наприклад,5стає5.00). -
Необхідно безпосередньо оновлювати список
prices, а не просто виводити значення зі знижкою.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 1.89
Ітерація за індексами
Свайпніть щоб показати меню
У попередньому завданні ви передавали певну кількість елементів у функцію range(). Але що робити, якщо потрібно визначити кількість елементів динамічно? Саме тут стає важливою ітерація за індексами.
Ітерація за індексами — це базова техніка в Python, яка дозволяє отримувати доступ і змінювати елементи за їхніми позиціями у структурах даних, таких як списки або масиви. Вона особливо корисна для завдань, які потребують точного контролю над кожним елементом, наприклад, оновлення рівнів запасів або керування даними про продажі у продуктовому магазині.
Перегляньте, як Олексій демонструє, як ітерація за індексами може спростити операції на прикладі нашого магазину:
Ітерація за індексами корисна, коли потрібно отримати доступ до обох — індексу та значення кожного елемента у списку. Коли ми використовуємо range() разом із len(), ми поєднуємо дві функції для створення послідовності чисел, що відповідають індексам елементів списку. Цей метод особливо зручний у циклах, де потрібно отримати доступ або змінити елементи за їхньою позицією.
Наприклад, цей цикл for отримує індекс і значення кожного елемента у grocery_list:
12345678# List of grocery items grocery_list = ["Apples", "Bananas", "Carrots", "Cucumbers"] # Initialize a for loop to iterate over indexes for item in range(len(grocery_list)): print("Index:", item) print("Item:", grocery_list[item]) print("----") # Printing a divider line for clarity
Приклад застосування
Щоб застосувати знижку до списку цін, необхідно змінювати елементи списку безпосередньо. Використання простого циклу, такого як for cost in prices:, надає лише копію кожного елемента, а не посилання на сам елемент у списку. Зміни, зроблені таким чином, не вплинуть на оригінальний список.
Щоб безпосередньо оновити кожен елемент у списку prices, використовують range(len(prices)) для ітерації за індексами. Це дозволяє застосувати коефіцієнт знижки до кожного елемента:
12345678910111213# List of original prices of grocery items prices = [1.50, 2.00, 0.75, 3.25] # Discount factor (10% off each item) discount_factor = 0.10 # Iterate over the list of prices using range(len()) for cost in range(len(prices)): # Apply the discount by reducing the price prices[cost] -= prices[cost] * discount_factor print(f"New price of item {cost + 1}: ${prices[cost]}") print("Updated prices:", prices)
- Формула
prices[cost] -= prices[cost] * discount_factorеквівалентнаprices[cost] = prices[cost] - prices[cost] * discount_factor. Вона віднімає частину початкової ціни (визначену знижкою) від самої себе, фактично застосовуючи знижку; - Вираз
cost + 1у команді виводу коригує індекс так, щоб він починався з1, а не з0, що робить його зручнішим для користувача.
Цей метод гарантує, що початковий список prices оновлюється безпосередньо новими, зниженими цінами, і зміни одразу відображаються у програмі всюди, де використовується список prices.
Swipe to start coding
Знижка за позицією
Оновіть список prices, застосувавши різні відсотки знижки до кожного елемента залежно від його позиції у списку. Використовуйте ітерацію за індексами, щоб безпосередньо оновити оригінальний список prices.
-
Використайте цикл for з
range()іlen()для проходження по індексах спискуprices; -
Для кожного індексу застосуйте такі знижки та оновіть список:
- Індекс 0: знижка 10% (помножити на 0.9);
- Індекс 1: знижка 20% (помножити на 0.8);
- Індекс 2: знижка 15% (помножити на 0.85);
- Індекс 3: знижка 5% (помножити на 0.95);
-
Після оновлення кожної ціни виведіть рядок:
Updated price for item {index}: ${updated_price:.2f}; -
Використовуйте
.2fу вашому операторі print для форматування цін до 2 знаків після коми (наприклад,5стає5.00). -
Необхідно безпосередньо оновлювати список
prices, а не просто виводити значення зі знижкою.
Рішення
Дякуємо за ваш відгук!
single