Оператор за цикъл FOR в Python
1. Какво е цикъл и защо ни е нужен?
Представи си, че трябва да напишеш „Здравей!“ 100 пъти. Вместо да копираш един и същ код 100 пъти, използваме цикъл. Цикълът for се използва, когато знаем точно колко пъти искаме да се повтори дадено действие.
2. Синтаксис (Как се пише?)
В Python цикълът for изглежда ето така:
for i in range(5):
print("Здравей!")
-
for– ключова дума, с която започваме. -
i– променлива (брояч), която се променя при всяко завъртане. -
range(5)– функцията, която казва колко пъти да се върти цикълът (в случая 5 пъти: от 0 до 4). -
Двоеточието (
:) – задължително! То казва: „Следва списък с команди“. -
Навътре (Indentation) – командите, които искаме да се повтарят, трябва да са леко вдлъбнати навътре (обикновено с клавиша Tab).
3. Функцията range()
Тя е двигателят на нашия цикъл. Може да я използваме по три начина:
-
range(5)– брои от 0 до 4 (5 числа). -
range(2, 6)– започва от 2 и спира преди 6 (ще изведе 2, 3, 4, 5). -
range(1, 10, 2)– започва от 1, спира преди 10 и се движи през 2 (ще изведе 1, 3, 5, 7, 9).
4. Практическа задача: „Математик“
Да напишем програма, която извежда таблицата за умножение с числото 5.
print("Таблица за умножение с 5:")
for i in range(1, 11):
rezultat = i * 5
print(i, "* 5 =", rezultat)
Важно: Обърни внимание, че
range(1, 11)включва 1, но не включва 11. Така получаваме точно числата от 1 до 10.
5. Упражнение за теб
Опитай се да промениш кода така, че:
-
Да извежда числата от 10 до 1 в обратен ред. (Подсказка: използвай
range(10, 0, -1)). -
Да събере всички числа от 1 до 100 и да изведе крайния сбор.
6. Цикълът for и текстови низове (Strings)
Знаеш ли, че в Python текстовете се разглеждат като поредица от символи? Можем да използваме for, за да „преминем“ през всяка буква.
Пример: „Разбивач на думи“
duma = "PYTHON"
for bukva in duma:
print("Буква:", bukva)
Тук променливата bukva приема стойността на всяка буква една по една.
7. Натрупване на стойност (Сумиране)
Това е една от най-честите употреби на цикъла. Използваме променлива (често наричана "акумулатор"), която „събира“ резултатите.
Пример: Пресмятане на среден успех
Представи си, че имаш 5 оценки и искаш да намериш техния сбор:
sbor = 0
for i in range(5):
ocenka = int(input("Въведи оценка: "))
sbor = sbor + ocenka
print("Общият сбор на оценките е:", sbor)
print("Среден успех:", sbor / 5)
8. Използване на if вътре в for
Циклите стават много мощни, когато в тях добавим проверка на условие. Така можем да филтрираме данни.
Пример: Да намерим само четните числа
Програмата ще провери числата от 1 до 20 и ще отпечата само тези, които се делят на 2 без остатък.
print("Четните числа до 20 са:")
for chislo in range(1, 21):
if chislo % 2 == 0: # Проверка дали остатъкът при деление на 2 е нула
print(chislo)
9. Сравнителна таблица на параметрите на range()
За да не се объркваш кога какво се случва в скобите, виж тази таблица:
| Код | Начало | Край (не се включва) | Стъпка | Резултат |
range(3) |
0 | 3 | 1 | 0, 1, 2 |
range(5, 8) |
5 | 8 | 1 | 5, 6, 7 |
range(0, 10, 2) |
0 | 10 | 2 | 0, 2, 4, 6, 8 |
range(10, 0, -1) |
10 | 0 | -1 | 10, 9, 8, ..., 1 |
Предизвикателство за теб:
Опитай се да напишеш програма, която пита потребителя колко пъти иска да се повтори един символ (например звезда *) и след това го отпечатва толкова пъти с помощта на for.
Модулът Turtle (Костенурка) е най-добрият начин да „видиш“ как работи цикълът for в действие. Вместо просто числа на екрана, ще получиш истински геометрични фигури.
Представи си, че костенурката е малко роботче с молив, което изпълнява твоите команди.
10. Първи стъпки с Turtle
За да започнем, първо трябва да повикаме костенурката с import turtle.
Задача: Начертаване на квадрат
Без цикъл бихме написали 8 реда код. С цикъл for ни трябват само 3:
import turtle
t = turtle.Turtle() # Създаваме нашата костенурка
for i in range(4):
t.forward(100) # Върви напред 100 стъпки
t.left(90) # Завърти се наляво на 90 градуса (прав ъгъл)
turtle.done() # Казваме на прозореца да остане отворен
11. Магията на ъглите (Чертане на многоъгълници)
Знаеш ли, че можеш да начертаеш всякакъв правилен многоъгълник, ако знаеш едно просто математическо правило? Сборът от външните ъгли на всяка фигура винаги е 360°.
външният ъгъл = 360 / броя на страните
Пример: Начертаване на шестоъгълник
import turtle
t = turtle.Turtle()
strani = 6
agul = 360 / strani # Изчисляваме ъгъла автоматично (60 градуса)
for i in range(strani):
t.forward(80)
t.left(agul)
12. Създаване на сложни фигури (Спирали)
Ако променяме малко дължината на страната при всяко завъртане, можем да създадем невероятни графики.
Пример: Цветна квадратна спирала
import turtle
t = turtle.Turtle()
t.speed(0) # Най-бързата скорост
colors = ["red", "purple", "blue", "green", "orange", "yellow"]
for x in range(100):
t.pencolor(colors[x % 6]) # Сменя цвета на всяка линия
t.forward(x * 2) # Линията става все по-дълга
t.left(59) # Завъртане на малко по-малко от 60 градуса
Какво научихме?
-
Повторение: Цикълът
forни спестява време и прави кода по-кратък. -
Променлива на цикъла: Променливата (като
iилиx) се променя автоматично при всяко завъртане. -
Креативност: С комбиниране на математика (
range, ъгли) и програмиране можем да създаваме изкуство.
- Детайли
- Посещения: 86
1. Какво е цикъл while?
Докато цикълът for обикновено се използва, когато знаем точно колко пъти ще се повтори нещо, цикълът while се използва, когато повторението зависи от условие.
Логиката е следната:
„Докато (while) условието е вярно, прави това и това.“
Синтаксис на Python:
while условие:
# код, който се повтаря (тяло на цикъла)
2. Как работи? (Пример)
Представи си, че искаме да изпишем числата от 1 до 5.
n = 1 # 1. Начална стойност на променливата
while n <= 5: # 2. Проверка на условието
print(n) # 3. Изпълнение на действие
n = n + 1 # 4. Промяна на променливата (стъпка)
Какво се случва тук?
-
Проверяваме: 1 <= 5 Да -> Печатаме 1 и n става 2.
-
Проверяваме: 2 <= 5 Да -> Печатаме 2 и n става 3.
-
...и така докато n стане 6. Тогава 6 <= 5 е лъжа (False) и цикълът спира.
3. Важни правила
За да работи цикълът правилно и да не „забие“ компютъра, трябва да внимаваш за две неща:
-
Двоеточие (
:): Винаги се поставя след условието. -
Навътре (Индентация): Всичко, което искаш да бъде част от цикъла, трябва да е отместено с един клавиш
Tabнадясно. -
Промяна на условието: Ако забравиш да увеличиш
n(редаn = n + 1), условието винаги ще е вярно и ще получиш безкраен цикъл.
4. Задача за упражнение
Опитай се да напишеш програма, която иска от потребителя да познае една парола (например "1234"). Програмата трябва да пита за парола, докато потребителят не въведе правилната.
Ето как би изглеждало решението:
password = ""
while password != "1234":
password = input("Въведи парола: ")
print("Браво! Влезе в системата.")
Кратко обобщение
-
whileсе повтаря, докато условието е True. -
Когато условието стане False, програмата продължава с кода след цикъла.
-
Използваме го, когато не знаем предварително броя на повторенията.
Задача: „Сбор до нула“
Напиши програма, която чете числа от клавиатурата едно след друго. Програмата трябва да събира тези числа и да спре едва когато потребителят въведе 0. Накрая трябва да се отпечата общият сбор.
Ето малко помощ (алгоритъм):
-
Създай променлива
suma = 0, където ще пазиш резултата. -
Прочети първото число от потребителя (например
chislo = int(input())). -
Напиши цикъл
while, който проверява дали числото не е равно на 0. -
Вътре в цикъла:
-
Добави числото към сумата (
suma = suma + chislo). -
Прочети следващото число (отново с
input), за да може цикълът да продължи или да спре.
-
-
След края на цикъла, принтирай
suma.
Ето го и решението! Разгледай го внимателно, защото има един важен момент: трябва да поискаме число от потребителя веднъж преди цикъла и всеки път вътре в него.
Кодът на програмата:
suma = 0
chislo = int(input("Въведи число (0 за край): "))
while chislo != 0:
suma = suma + chislo
chislo = int(input("Въведи следващо число: "))
print("Общият сбор на числата е:", suma)
Какво се случва стъпка по стъпка?
-
Първоначален вход: Програмата взема първото число. Ако веднага въведеш
0, условиетоchislo != 0ще бъде грешно още в началото и цикълът изобщо няма да започне. -
Проверка:
while chislo != 0проверява дали току-що въведеното число е различно от нула. -
Натрупване: Редът
suma = suma + chisloдобавя текущото число към общия резултат. -
Нов вход (Обновяване): Вътре в цикъла отново искаме число. Това е критично – ако не го направим, променливата
chisloникога няма да се промени и цикълът ще стане безкраен.
Кратък съвет за по-напреднали:
В Python редът suma = suma + chislo може да се запише по-кратко така: suma += chislo
Въведете кода на програмата в компилатора на Python - code.org
Нека тогава разгледаме задачата за намиране на най-голямото число (Максимум) в поредица, която завършва с 0.
Това е много популярна задача в 7. клас, защото изисква малко по-различно мислене.
Задача: „Най-голямото число“
Трябва да четем числа, докато не получим 0. Накрая програмата трябва да каже кое от въведените числа е било най-голямо.
Логиката: Представи си, че имаш купчина карти с числа. Първата карта, която видиш, за теб е „най-голямата“ до момента. Всяка следваща карта сравняваш с нея – ако новата е по-голяма, тя става твоят нов максимум.
Кодът на Python:
# Четем първото число
chislo = int(input("Въведи число (0 за край): "))
# Приемаме, че първото число е най-голямото досега
max_chislo = chislo
while chislo != 0:
# Проверяваме дали текущото число е по-голямо от рекорда ни
if chislo > max_chislo:
max_chislo = chislo
# Четем следващото число
chislo = int(input("Въведи следващо число: "))
print("Най-голямото въведено число е:", max_chislo)
Какво научихме тук?
-
Променлива за резултат: Използваме
max_chislo, за да „помним“ рекорда. -
Проверка с
if: Вътре в цикълаwhileможем да поставяме други команди, като например проверка сif. -
Обновяване на рекорда: Само ако новото число е по-голямо, променяме
max_chislo.
Забележка от учебника: Внимавай – ако въведеш само отрицателни числа (например -5, -10, -2) и накрая 0, програмата ще работи коректно, защото започваме с първото въведено число като начален максимум.
В програмирането често има повече от един начин да се реши задача. Ако искаме да намерим най-голямото число без if, можем да използваме вградената функция в Python, наречена max().
Функцията max(a, b) директно ни връща по-голямото от двете числа.
Решение с while и max():
chislo = int(input("Въведи число (0 за край): "))
max_chislo = chislo
while chislo != 0:
# Функцията max сравнява стария запис и новото число
max_chislo = max(max_chislo, chislo)
chislo = int(input("Въведи следващо число: "))
print("Най-голямото въведено число е:", max_chislo)
Как работи max()?
Представи си го като малка машина: ти ѝ подаваш две стойности, а тя ти връща само по-голямата. Така си спестяваш писането на проверка с if.
Още една идея: Броене на числата
Ако искаш да видиш колко числа е въвел потребителят (преди да напише 0), можем да добавим един брояч:
broi = 0
chislo = int(input("Въведи число: "))
while chislo != 0:
broi = broi + 1 # Увеличаваме брояча с 1 при всяко влизане в цикъла
chislo = int(input("Въведи следващо: "))
print("Ти въведе общо", broi, "числа.")
Това е чудесна идея! Броенето на елементи е една от най-честите задачи, които се решават с цикъл while. В програмирането наричаме променливата, която прави това, брояч (counter).
Ето как можем да добавим брояч към нашия код:
Задача: „Колко числа въведох?“
Искаме да разберем колко числа е въвел потребителят, преди да напише 0 (самата нула обикновено не я броим, защото тя е само сигнал за край).
broi = 0 # 1. Първоначално броячът е нула
chislo = int(input("Въведи число: "))
while chislo != 0:
broi = broi + 1 # 2. Увеличаваме с 1 при всяко влизане в цикъла
chislo = int(input("Въведи следващо число: "))
print("Ти въведе общо", broi, "числа.")
Как работи механизмът на брояча?
-
Инициализация: Преди цикъла казваме
broi = 0. Това е нашият празен съд. -
Инкрементиране (Увеличаване): Всеки път, когато влезеш в тялото на цикъла (т.е. потребителят е въвел число, различно от 0), добавяш 1 към старата стойност на
broi. -
Край: Когато се въведе 0, цикълът спира и програмата изписва натрупаната стойност в
broi.
Да обобщим всичко в една "Супер програма"
Ето как изглежда код, който прави всичко, което научихме досега (сбор, брой и най-голямо число) наведнъж:
suma = 0
broi = 0
max_chislo = 0
chislo = int(input("Въведи число (0 за край): "))
if chislo != 0:
max_chislo = chislo # Приемаме първото за най-голямо
while chislo != 0:
suma = suma + chislo
broi = broi + 1
max_chislo = max(max_chislo, chislo)
chislo = int(input("Въведи следващо число: "))
print("--- Резултати ---")
print("Сбор:", suma)
print("Брой числа:", broi)
print("Най-голямо число:", max_chislo)
Въпрос:
Ако искаме да намерим средното аритметично на въведените числа, как мислиш, че трябва да го пресметнем в края на програмата, като използваме променливите suma и broi?
За да намерим средното аритметично, просто трябва да разделим общия сбор на броя на числата. В математиката това е формулата:
sredno = suma / broi
Ето как изглежда завършената програма:
suma = 0
broi = 0
max_chislo = 0
chislo = int(input("Въведи число (0 за край): "))
if chislo != 0:
max_chislo = chislo
while chislo != 0:
suma = suma + chislo
broi = broi + 1
max_chislo = max(max_chislo, chislo)
chislo = int(input("Въведи следващо число: "))
# Проверяваме дали са въвеждани числа, за да не делим на нула
if broi > 0:
sredno = suma / broi
print("--- Резултати ---")
print("Общ сбор:", suma)
print("Брой числа:", broi)
print("Най-голямо число:", max_chislo)
print("Средно аритметично:", sredno)
else:
print("Не са въведени числа.")
Защо сложихме if broi > 0?
Това е много важен детайл в програмирането. Ако потребителят веднага напише 0, променливата broi ще остане 0. Тъй като в математиката не може да се дели на нула, компютърът ще даде грешка и програмата ще спре. Затова първо проверяваме дали имаме поне едно число.
Какво научихме днес?
-
whileсе използва за повторение с условие. -
suma = suma + nнатрупва сбор. -
broi = broi + 1брои повторенията. -
max(a, b)намира по-голямото число. -
/се използва за деление (резултатът винаги е дробно число).
- Детайли
- Посещения: 302