Цикл for у python
У цьому уроці ми розберемо цикл for у Python та дізнаємося історію створення шахів. Який цикл краще: while чи for? Обирайте самі, втім важливо вправно володіти обома. Тож, поїхали!
Якщо ви призабули, що таке цикл, то раджу повернутися до уроку по циклу while і згадати.
👦🏻 “І нащо мені вчити ще один цикл 🤯? Тільки з while розібрався! 🥵”.
🙋♀️ “Тут як з виделкою і ложкою. Їсти можна тільки виделкою. Або тільки ложкою. Але зручніше чергувати залежно від страви. Схоже і з циклами. Будь-яку програму, написану на while можна переписати на for. І навпаки. Але є випадки, коли краще працює цикл for у ваших Python програмах, і є випадки, де зручніше з while”
Цикл for варто використати тоді, коли ми завчасно знаємо кількість ітерацій (запусків циклів). Також його зручно запускати по списку чи об’єкту.
Найпростіший For
1: Снігопад. Запишіть собі приклади схожих циклів, які малюють сніжинки. Змініть цикли так, щоб в останньому рядку було 10 сніжинок.
i=0
while (i<5):
print ("*"*i)
i+=1
for i in range (5):
print ("*"*i)
У найпростішому варіанті FOR у функцію range передається тільки кількість запусків циклу.
Легенда про створення шахів
За легендою, коли творець шахів давньоіндійський математик-мудрець, на ім’я Сісса показав свій винахід правителю країни, тому так сподобалася гра, що він проводив години граючи у неї. За таку винахідливість правитель дозволив винахіднику вибрати нагороду.
Мудрець подумав та попросив у короля за першу клітку шахівниці заплатити йому одне зерно рису, за другу – два, за третю – чотири і т. д., подвоюючи кількість зерен на кожній наступній клітинці.
Правитель, який не знався на математиці, швидко погодився, навіть трохи образившись на таку невисоку оцінку винаходу, і наказав керівнику скарбниці підрахувати і видати винахіднику потрібну кількість зерна.
Однак, коли через тиждень скарбник все ще не зміг підрахувати, скільки потрібно зерен, правитель запитав, у чому причина такої затримки. Скарбник показав йому розрахунки і сказав, що розплатитися неможливо, хіба що осушити моря та океани і засіяти весь простір пшеницею 🤑.
Кількість зерна, що запросив хитрий винахідник, приблизно в 1800 разів перевищує сучасний світовий врожай пшениці за рік (у 2008-09 аграрному році врожай становив 686 млн тонн), і також перевищує весь урожай пшениці, зібраний за всю історію людства.
Порахувати суму можна так:
1 + 2 + 4 + 8 + . . . = 20 + 21 + 22 + 23 + . . . + 263.
2: Давай тепер складемо цикл for на python, яка буде писати кількість зерен на кожній клітинці.
Білу клітинку заміни на кількість клітинок на шахівниці.
Чорну клітинку заміни на число в яке збільшується кількість зерна від клітинки до клітинки.
for i in range (⬜️):
print (f"На {i} клітинці {⬛️**i} зерен")
Вигідна угода.
Якщо вам запропонують угоду, чи погодитеся ви:
Вам будуть давати по 10 000 доларів на день. Натомість ви повинні повертати такі гроші протягом місяця: в 1-й день 1 цент, в другий – 2 центи, в 3-й 4 центи і т.д.
3 (Level UP): Складіть програму, яка рахуватиме, скільки людина утримає гроші в разі “Вигідної угоди” вище і скільки втратить.
Функція range()
Функція range() вказує скільки разів потрібно повторити щось.
Функцію range() часто використовує цикл For у Python. Вона має такі аргументи:
- start вказує ціле число, з якого починається послідовність (включно). Якщо цей аргумент не вказано, використовується значення 0.
- stop потрібно використовувати завжди. Це останнє ціле число послідовності (не включно).
- step визначає крок: наскільки потрібно збільшити (у разі негативних чисел зменшити) наступну ітерацію. Якщо аргумент step пропущено, за промовчанням використовується 1.
Не обов’язково вказувати всі три аргументи для range.
Можна вказати лише один. Тоді цикл буде від 0 (включно) до вказаного числа (не включно) з кроком 1
Можна вказати два числа. Тоді цикл буде від першого числа (включно) до другого числа (не включно) з кроком 1.
4: Знайдіть суму всіх чисел від 0 до 100 (включно) за допомогою циклу for та range(stop):
result=0
for i in range(101):
result+=i
print (result)
5: Знайдіть суму всіх чисел від 20 до 30 (включно) за допомогою циклу for range(start,stop)
6: Знайдіть суму всіх чисел, які діляться на 5 від 100 до 200 (включно) за допомогою циклу for та range(start, stop, step)
Також в параметрі “крок” (step) можна використовувати від’ємні числа. Тоді цикл перебиратиме значення у зворотному напрямку. У такому разі не забудьте відкоригувати аргументи start і stop (поставте їх за спаданням).
7: Давайте напишемо програму-таймер, яка відраховує задану кількість секунд
import time
for i in range(30,0,-1):
time.sleep(1)
print(i)
time.sleep(1) – ця команда допомагає програмі заснути на одну секунду
8: Змініть таймер, щоб він рахував 20 секунд.
Відео з поясненнями на тему цикл for у python:
Домашка
1: Подана програма виводить всі дні січня. Перепишіть її, використовуючи цикл for замість while
date = 1
while date <= 31:
print ( str(date) + " of January")
date = date + 1
2: Дана програма виводить табличку множення на 8 для чисел від 0 до 10. Ваша задача змінити програму так, щоб вона виводила табличку множення на 7 для чисел від 11 до 20.
for i in range (11):
res=i*8
print (i, "*8=", res)
3: Виведіть всі числа, які діляться на 3 із діапазону, який введе користувач.
Приклад роботи:
Введіть перше число: 6
Введіть друге число: 15
6, 9, 12
Додаткові бали, якщо в програмі будуть перевірки: Додайте необхідні перевірки того, що користувач ввів дані правильно. Якщо дані неправильні, виведіть повідомлення про помилку.
4: У юного тіктокера зараз 5000 підписників. Він дізнався, що якщо буде працювати над власним контентом і викладати вчасно нові відео, то до нього на канал будуть додаватися нові підписники, при чому у їх кількість буде зростати щомісяця. У перший місяць може підписатися 600 людей, у 2-й – 700, у 3-й – 800 і т.д. Створіть програму, як буде показувати, яка кількість користувачів буде у блогера в кожний місяць року.
(Якщо важко придумати формулу – нижче є підказка)
Підказка по формулі: 500+i*100 (якщо місяці рахувати з 1)
Level Up!
1: Намалюйте схожу ялинку догори дриґом (схожу на малюнок) за допомогою циклу for :
2: Напишіть програму, яка визначає чи число просте(ділиться лише на 1 і це число) чи складене (має більше ніж два дільники). Користувач вводить число, а програма йому каже чи воно просте.
Все! Більше інформації про цикл for у Python тут.
Не зупиняйтесь у вивченні Python! До зустрічі на наступних уроках!