Цикли While
Цикли while
— це основний інструмент для роботи з невизначеною ітерацією, що корисно у випадках, коли кількість повторень невідома заздалегідь, наприклад, для відстеження рівня запасів доти, доки вони не досягнуть певного порогу.
Перегляньте, як Олексій демонструє використання циклів while
для обробки динамічних ситуацій:
Цикл while
у Python виконує блок коду доти, доки задана умова залишається True
.
Синтаксис
Щоб почати цикл while
, потрібно визначити лічильник і після нього використати ключове слово while
з булевою умовою. Після умови ставиться двокрапка :
, яка позначає початок блоку коду циклу.
Цикл виконуватиметься повторно доти, доки умова не стане False
. Зазвичай лічильник оновлюється всередині циклу, щоб у підсумку умова стала False
і цикл завершився.
Розгляньте цей приклад циклу while
:
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
У цьому прикладі queue_length
виступає як лічильна змінна, що починається з 5
. З кожною ітерацією циклу значення queue_length
зменшується на 1
, доки не досягне 0
. У цей момент цикл завершується, оскільки умова 0 > 0
оцінюється як False
.
Примітка
Важливо оновлювати лічильну змінну всередині циклу, щоб у підсумку досягти умови завершення циклу. Без цього цикл буде виконуватися безкінечно, що унеможливить виконання подальшого коду.
Приклад застосування
Уявіть, що ви керуєте запасами молока в продуктовому магазині. Потрібно стежити, щоб запаси не опускалися нижче певного рівня, а коли це трапляється — поповнювати їх для підтримки необхідного рівня.
У такій ситуації зручно використовувати цикл while
, оскільки він дозволяє поповнювати молоко поступово, за кілька ітерацій, поки запас не досягне бажаного рівня. Без циклу while
довелося б одразу розраховувати точну кількість молока для поповнення.
Наприклад, уявімо, що працівник магазину може поповнити лише фіксовану кількість молока за один раз (наприклад, 20
упаковок за одне поповнення). Якщо запас ще не повністю відновлено, працівник повертається на склад за наступною партією молока.
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
Примітка
milk_stock += restock_quantity
еквівалентноmilk_stock = milk_stock + restock_quantity
. Це просто більш стислий і зрозумілий спосіб запису тієї ж операції.
Блок-схема вище ілюструє логіку використання циклу while
для керування запасами молока. Зверніть увагу, що лічильник milk_stock
, який починається з 15
, збільшується на значення restock_quantity
з кожною ітерацією циклу.
Цикл виконується доти, доки milk_stock
не перевищить порогове значення min_stock
у 50
, після чого зупиняється.
Swipe to start coding
Керуйте запасами продуктового магазину, використовуючи цикли while для забезпечення мінімального рівня запасів для Bread
, Eggs
та Apples
. Кількість для поповнення зберігається у словнику.
- Використовуйте цикл
while
, щоб перевірити, чи запас"Bread"
нижчий за мінімальний рівень. Якщо так, збільшуйте його запас, використовуючи відповідну кількість для поповнення зі словника. - Повторіть цю ж логіку для
"Eggs"
та"Apples"
, для кожного використовуючи окремий циклwhile
. - Після поповнення запасів пройдіться по словнику
inventory
за допомогою циклуfor
і виведіть фінальні рівні запасів для всіх товарів.
Вимоги до виводу
- Для кожного поповненого товару виведіть:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Після завершення поповнення виведіть
Final Inventory after restocking:
і оновлені рівні запасів:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Додайте порожній рядок перед фінальним інвентарем, використовуючи
\n
. - Використовуйте f-рядки для форматування та одинарні лапки всередині подвійних лапок для ключів словника.
Примітка
Щоб уникнути конфліктів синтаксису у f-рядках, використовуйте подвійні лапки навколо рядка та одинарні всередині:
f"Bread stock is low: {inventory['Bread'][0]} units."
Використовуйте\n
для початку нового рядка у виводі:"First line.\nSecond line."
Рішення
Дякуємо за ваш відгук!