51 СУ "Елисавета Багряна" - София
Мечтаем, вярваме, постигаме
  • Начало
  • Страници
    • Математика
    • КМИТ
      • Входно ниво - 6 клас
    • Фотография
      • Nikon Z50 II
      • Ръководство за Sony A6400 и обектива Sony E 18-135mm f/3.5-5.6 OSS
      • История на видеотехниката
    • Python
    • Moodle
    • Школо
    • Галерия
  • За ученика
    • Програма
    • Ваканции
  • Карта на сайта
  • Връзки
    • Компилатор за Python - code.org
    • Преводач
    • Рая Ковачева
    • Geogebra
      • Изтегли
    • Гръмотевици
    • SEB
    • Компилатор за Python - trinket.io
    • Справка за пароли
  • Архив
  1. Вие сте тук: 
  2. Начало
  3. Предмети
  4. Python

Оператор за цикъл FOR в Python

1. Какво е цикъл и защо ни е нужен?

Представи си, че трябва да напишеш „Здравей!“ 100 пъти. Вместо да копираш един и същ код 100 пъти, използваме цикъл. Цикълът for се използва, когато знаем точно колко пъти искаме да се повтори дадено действие.

2. Синтаксис (Как се пише?)

В Python цикълът for изглежда ето така:

Python
 
for i in range(5):
    print("Здравей!")

  • for – ключова дума, с която започваме.

  • i – променлива (брояч), която се променя при всяко завъртане.

  • range(5) – функцията, която казва колко пъти да се върти цикълът (в случая 5 пъти: от 0 до 4).

  • Двоеточието (:) – задължително! То казва: „Следва списък с команди“.

  • Навътре (Indentation) – командите, които искаме да се повтарят, трябва да са леко вдлъбнати навътре (обикновено с клавиша Tab).


3. Функцията range()

Тя е двигателят на нашия цикъл. Може да я използваме по три начина:

  1. range(5) – брои от 0 до 4 (5 числа).

  2. range(2, 6) – започва от 2 и спира преди 6 (ще изведе 2, 3, 4, 5).

  3. range(1, 10, 2) – започва от 1, спира преди 10 и се движи през 2 (ще изведе 1, 3, 5, 7, 9).


4. Практическа задача: „Математик“

Да напишем програма, която извежда таблицата за умножение с числото 5.

Python
 
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, за да „преминем“ през всяка буква.

Пример: „Разбивач на думи“

Python
 
duma = "PYTHON"
for bukva in duma:
    print("Буква:", bukva)

Тук променливата bukva приема стойността на всяка буква една по една.


7. Натрупване на стойност (Сумиране)

Това е една от най-честите употреби на цикъла. Използваме променлива (често наричана "акумулатор"), която „събира“ резултатите.

Пример: Пресмятане на среден успех

Представи си, че имаш 5 оценки и искаш да намериш техния сбор:

Python
 
sbor = 0
for i in range(5):
    ocenka = int(input("Въведи оценка: "))
    sbor = sbor + ocenka

print("Общият сбор на оценките е:", sbor)
print("Среден успех:", sbor / 5)


8. Използване на if вътре в for

Циклите стават много мощни, когато в тях добавим проверка на условие. Така можем да филтрираме данни.

Пример: Да намерим само четните числа

Програмата ще провери числата от 1 до 20 и ще отпечата само тези, които се делят на 2 без остатък.

Python
 
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:

Python
 
import turtle

t = turtle.Turtle()  # Създаваме нашата костенурка

for i in range(4):
    t.forward(100)   # Върви напред 100 стъпки
    t.left(90)       # Завърти се наляво на 90 градуса (прав ъгъл)

turtle.done()        # Казваме на прозореца да остане отворен


11. Магията на ъглите (Чертане на многоъгълници)

Знаеш ли, че можеш да начертаеш всякакъв правилен многоъгълник, ако знаеш едно просто математическо правило? Сборът от външните ъгли на всяка фигура винаги е 360°.

външният ъгъл = 360 / броя на страните

Пример: Начертаване на шестоъгълник

Python
 
import turtle
t = turtle.Turtle()

strani = 6
agul = 360 / strani  # Изчисляваме ъгъла автоматично (60 градуса)

for i in range(strani):
    t.forward(80)
    t.left(agul)


12. Създаване на сложни фигури (Спирали)

Ако променяме малко дължината на страната при всяко завъртане, можем да създадем невероятни графики.

Пример: Цветна квадратна спирала

Python
 
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 градуса


Какво научихме?

  1. Повторение: Цикълът for ни спестява време и прави кода по-кратък.

  2. Променлива на цикъла: Променливата (като i или x) се променя автоматично при всяко завъртане.

  3. Креативност: С комбиниране на математика (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. Проверяваме: 1 <= 5  Да -> Печатаме 1 и n става 2.

  2. Проверяваме: 2 <= 5  Да -> Печатаме 2 и n става 3.

  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. Накрая трябва да се отпечата общият сбор.

Ето малко помощ (алгоритъм):

  1. Създай променлива suma = 0, където ще пазиш резултата.

  2. Прочети първото число от потребителя (например chislo = int(input())).

  3. Напиши цикъл while, който проверява дали числото не е равно на 0.

  4. Вътре в цикъла:

    • Добави числото към сумата (suma = suma + chislo).

    • Прочети следващото число (отново с input), за да може цикълът да продължи или да спре.

  5. След края на цикъла, принтирай suma.


 

Ето го и решението! Разгледай го внимателно, защото има един важен момент: трябва да поискаме число от потребителя веднъж преди цикъла и всеки път вътре в него.

Кодът на програмата:

Python
 
suma = 0
chislo = int(input("Въведи число (0 за край): "))

while chislo != 0:
    suma = suma + chislo
    chislo = int(input("Въведи следващо число: "))

print("Общият сбор на числата е:", suma)


Какво се случва стъпка по стъпка?

  1. Първоначален вход: Програмата взема първото число. Ако веднага въведеш 0, условието chislo != 0 ще бъде грешно още в началото и цикълът изобщо няма да започне.

  2. Проверка: while chislo != 0 проверява дали току-що въведеното число е различно от нула.

  3. Натрупване: Редът suma = suma + chislo добавя текущото число към общия резултат.

  4. Нов вход (Обновяване): Вътре в цикъла отново искаме число. Това е критично – ако не го направим, променливата 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)


Какво научихме тук?

  1. Променлива за резултат: Използваме max_chislo, за да „помним“ рекорда.

  2. Проверка с if: Вътре в цикъла while можем да поставяме други команди, като например проверка с if.

  3. Обновяване на рекорда: Само ако новото число е по-голямо, променяме 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 (самата нула обикновено не я броим, защото тя е само сигнал за край).

Python
 
broi = 0  # 1. Първоначално броячът е нула
chislo = int(input("Въведи число: "))

while chislo != 0:
    broi = broi + 1  # 2. Увеличаваме с 1 при всяко влизане в цикъла
    chislo = int(input("Въведи следващо число: "))

print("Ти въведе общо", broi, "числа.")

Как работи механизмът на брояча?

  1. Инициализация: Преди цикъла казваме broi = 0. Това е нашият празен съд.

  2. Инкрементиране (Увеличаване): Всеки път, когато влезеш в тялото на цикъла (т.е. потребителят е въвел число, различно от 0), добавяш 1 към старата стойност на broi.

  3. Край: Когато се въведе 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
  • Декларация за поверителност
  • Заявка за изтриване на данни
  • Декларация за достъпност
© 2026 51 СУ "Елисавета Багряна". Всички права запазени.
Joomla! е свободен софтуер публикуван по GNU GPL