Kalo te përmbajtja
Kalo te mësimi

6 min lexim

Moduli 1 nga 4, mësimi 3 nga 4. 0 nga 11 mësime të përfunduara.

American Corners

Ciklet

T'i mësosh një roboti të përsërisë

Deri tani, çdo urdhër që i ke dhënë Python-it ka ecur vetëm një herë. Por programet e vërteta e bëjnë të njëjtën gjë sërish e sërish: vizatojnë katër brinjët e një katrori, ndajnë një letër për secilin lojtar, kontrollojnë çdo shkronjë të një fjale. Ta shkruash të njëjtin rresht dhjetë herë do të ishte e ngadaltë dhe e lehtë për ta gabuar. Një cikël të lejon ta shkruash urdhrin një herë të vetme dhe t'i thuash Python-it sa herë, ose në ç'kusht, ta përsërisë.

Mendoje breshkën si një robot të vogël. Për të vizatuar një katror, do që ai të shkojë përpara dhe të kthehet djathtas, katër herë. Në vend që t'i kopjosh ato dy rreshta katër herë, i mbështjell brenda një cikli. Kjo është e gjithë ideja: përsërit një bllok pune pa e përsëritur veten.

Python të jep dy cikle. Cikli while përsërit për sa kohë diçka mbetet e vërtetë. Cikli for përsërit një herë për secilin element të një sekuence. Do t'i njohim të dyja.

Cikli while: përsërit sa kohë diçka është e vërtetë

Një cikël while vazhdon ta ekzekutojë bllokun e vet për sa kohë një kusht qëndron. Në çastin që kushti bëhet i pavërtetë, Python e kapërcen ciklin dhe vazhdon më tej.

Këtu roboti numëron nga 0 e sipër dhe ndalon para se të arrijë 3:

count = 0
while count < 3:
    print("Përshëndetje!")
    count = count + 1

Kjo e shkruan Përshëndetje! tri herë. Lexoje ngadalë. Python kontrollon count < 3. Është e vërtetë (0 është më i vogël se 3), ndaj blloku ekzekutohet: shkruan tekstin, pastaj i shton 1 vlerës count. Tani count është 1, ende më i vogël se 3, ndaj ekzekutohet përsëri. Kur count arrin 3, kushti është i pavërtetë dhe cikli mbaron.

Rreshti count = count + 1 ka rëndësi. Nëse e harron, count mbetet përgjithmonë 0, kushti nuk bëhet kurrë i pavërtetë dhe cikli nuk ndalon kurrë. Kjo quhet cikël i pafund, dhe është gabimi më i shpeshtë me while. Çdo cikël while ka nevojë për diçka brenda tij që e afron drejt ndalimit.

Cikli for: një herë për secilin element

Cikli for është zgjedhja e natyrshme kur tashmë e di se çfarë do të përshkosh, si për shembull një listë fjalësh. Ai e ekzekuton bllokun një herë për secilin element, duke ta dhënë elementin sa herë:

fruta = ["mollë", "banane", "qershi"]
for x in fruta:
    print(x)

Kjo shkruan mollë, pastaj banane, pastaj qershi. Variabli x bëhet secili frut me radhë; nuk të duhej të numëroje asgjë.

Kur do të përsëritësh një numër të caktuar herësh, çifto for me range. range(4) prodhon numrat 0, 1, 2, 3, ndaj kjo vizaton një katror:

import turtle

skk = turtle.Turtle()
for brinja in range(4):
    skk.forward(100)
    skk.right(90)
turtle.done()

Pra kur e përdor secilin? Përdor një cikël for kur i di elementet ose numrin që më parë, që është shumica e rasteve. Përdor një cikël while kur nuk mund ta thuash paraprakisht sa raunde do të duhen, për shembull "vazhdo të pyesësh derisa lojtari të shkruajë një përgjigje të vlefshme".

break dhe continue: të ndalosh herët dhe të kapërcesh

Ndonjëherë do të dalësh nga një cikël para se ai të mbarojë vetë. break e ndalon ciklin menjëherë. Kështu e ndal një robot që përndryshe do të lëvizte pafund:

count = 0
while True:
    print("po lëviz")
    count = count + 1
    if count == 5:
        break

while True vetvetiu do të ecte përgjithmonë, por break del jashtë sapo roboti të ketë lëvizur pesë herë.

continue është më i butë: ai kapërcen pjesën e mbetur të raundit të tanishëm dhe kalon drejt e te tjetri. Forma me dy argumente range(1, 7) nis nga 1 në vend të 0 dhe ndalon para 7, ndaj jep 1, 2, 3, 4, 5, 6. Këtu cikli shkruan vetëm numrat tek, duke kapërcyer çiftët:

for n in range(1, 7):
    if n % 2 == 0:
        continue
    print(n)

Python të lejon gjithashtu t'i bashkangjitësh një else një cikli. Blloku else ekzekutohet një herë, pasi cikli mbaron normalisht (domethënë, kur asnjë break nuk e ka ndalur):

for i in range(1, 4):
    print(i)
else:
    print("Pa break")

Kjo shkruan 1, 2, 3, dhe pastaj Pa break.

Provo veten

  1. Në shembullin e numërimit, pse ka rëndësi rreshti count = count + 1? Çfarë do t'i ndodhte ciklit po ta fshije atë?
  2. Do të vizatosh një gjashtëkëndësh (gjashtë brinjë) me breshkën. Do të zgjidhje një cikël for apo një cikël while, dhe përafërsisht çfarë do të vendosje brenda tij?
  3. Cili është ndryshimi mes asaj që bën break dhe asaj që bën continue kur Python i arrin brenda një cikli?
Përgjigjet
  1. Ai e afron count drejt 3-shit, kështu që kushti bëhet në një moment i rremë. Pa të, count mbetet 0, count < 3 është gjithmonë i vërtetë, dhe cikli shkruan Përshëndetje! pafundësisht (një cikël i pafundmë).
  2. Një cikël for, sepse e di numrin: gjashtë brinjë. Brenda tij, skk.forward(100) dhe skk.right(60), sepse 360 pjesëtuar me 6 bën 60.
  3. break del krejt nga cikli dhe asgjë tjetër brenda tij nuk ekzekutohet. continue kapërcen vetëm pjesën e mbetur të raundit të tanishëm, dhe cikli vazhdon me elementin tjetër.

Nga vjen ky mësim

Ndërtuar mbi

  • Programming in a Data World: dosja e Leksionit 3 (ciklet) dhe Notebook-u i Leksionit
  • Video: 3.0 Loops

alphaPlan tregon nëse një mësim vjen nga një program i zhvilluar në klasë apo është shkruar për këtë shteg. Kur një pohim mbështetet mbi një standard të jashtëm ose mbi një rast të raportuar, ai emërtohet më sipër që ta kontrollosh vetë e të mos na besosh në fjalë.

Ky kurs u zhvillua nga alphaPlan Center mbi bazën e programeve të realizuara në partneritet me rrjetin American Corners. Kush bëri çfarë

Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim