Kalo te përmbajtja

6 min lexim

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. Këtu 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?

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

Kurset e alphaPlan ndërtohen mbi programe të zhvilluara në klasë, e nuk shpiken për web-in. 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.

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