11.1. Пајтон подсетник - петље¶
У програмима често имамо потребу да се одређена наредба или блок наредби понове више пута. Сигурни смо да знаш од раније да је најбољи начин да се ово уради коришћењем петљи, тј. наредби које омогућавају да се нека наредба или неки блок наредби понове више пута. Хајде да видимо како ће нам петље бити корисне и у Пајгејму.
Концентрични кругови¶

Напиши програм који црта концентричне кругове чији је центар у центру прозора, а полупречници су редом 10, 20, …, 100 пиксела. Сваки круг нацртати црвеном линијом дебљином 5 пиксела.
Центар прозора се једноставно израчунава тако да му је координата x на пола ширине, а координата y на пола висине прозора (обрати пажњу на то да се код кругова морају користити цели бројеви, па стога морамо употребити целобројно дељење). Након тога, можемо навести 10 наредби за цртање кругова.
# bojimo pozadinu prozora u belu
prozor.fill(pg.Color("white"))
# centar kruga je u centru prozora
centar = (sirina // 2, visina // 2)
pg.draw.circle(prozor, pg.Color("red"), centar, 10, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 20, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 30, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 40, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 50, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 60, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 70, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 80, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 90, 5)
pg.draw.circle(prozor, pg.Color("red"), centar, 100, 5)
(koncentricni_krugovi_peske)
Претходно решење има много мана. За почетак, тешко је откуцати оволики број наредби. Даље, ако бисмо се предомислили и променили број кругова или величине полупречника, програм би захтевао доста компликоване измене. Задатак се много боље и једноставније решава када се примети да се полупречници кругова редом мењају од 10 до 100 са кораком 10 (10, 20, 30, …, 90, 100) и када се подсетимо да се у Пајтону такво набрајање може остварити петљом:
for i in range(pocetak, kraj, korak):
...
(petlja)
Пошто десни крај није укључен у набрајање (узимају се вредности из
полуотвореног интервала
На основу претходне дискусије допуни наредни програм:
import pygame as pg
import pygamebg
pg.init() # inicijalizujemo rad biblioteke PyGame
pg.display.set_caption("Koncentricni krugovi") # otvaramo prozor
(sirina, visina) = (225, 225)
prozor = pg.display.set_mode((sirina, visina))
# bojimo pozadinu prozora u belo
prozor.fill(pg.Color("white"))
# centar kruga je u centru prozora - obrati pažnju na tip podataka
centar = (???, ???)
# poluprečnik se menja od 10 do 100, sa korakom 10
for r in range(10, ???, 10):
# crtamo krug
???
# prikazujemo prozor i čekamo da ga korisnik isključi
pygamebg.wait_loop()
(koncentricni_krugovi)
Као и увек, препоручујемо ти да током рада користиш и наш Синтаксни подсетник за Пајтон ако ти икад затреба да се подсетиш ових ствари. Ако желиш, петљи се можеш подсетити у курсу Програмирање у Пајтону за шести разред