6 min lexim
Moduli 1 nga 4, mësimi 3 nga 4. 0 nga 11 mësime të përfunduara.
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
- Në shembullin e numërimit, pse ka rëndësi rreshti
count = count + 1? Çfarë do t'i ndodhte ciklit po ta fshije atë? - Do të vizatosh një gjashtëkëndësh (gjashtë brinjë) me breshkën. Do të zgjidhje një cikël
forapo një cikëlwhile, dhe përafërsisht çfarë do të vendosje brenda tij? - Cili është ndryshimi mes asaj që bën
breakdhe asaj që bëncontinuekur Python i arrin brenda një cikli?
Përgjigjet
- Ai e afron
countdrejt 3-shit, kështu që kushti bëhet në një moment i rremë. Pa të,countmbetet 0,count < 3është gjithmonë i vërtetë, dhe cikli shkruanPërshëndetje!pafundësisht (një cikël i pafundmë). - Një cikël
for, sepse e di numrin: gjashtë brinjë. Brenda tij,skk.forward(100)dheskk.right(60), sepse 360 pjesëtuar me 6 bën 60. breakdel krejt nga cikli dhe asgjë tjetër brenda tij nuk ekzekutohet.continuekapë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