pandan y ap bouk nan Python. Ki jan li fonksyone, egzanp itilizasyon

Loops se youn nan zouti prensipal nenpòt lang. Gen de bouk debaz nan Python, youn nan ki se pandan. Konsidere li, epi tou pou yon pi bon konpreyansyon sou foto a, yon lòt. Vreman vre, an konparezon ak yon bagay ki sanble, li pi fasil pou konprann nenpòt materyèl, pa vre?

Konsèp yon sik

Yon bouk nesesè lè yon sèten aksyon bezwen fèt plizyè fwa. Sa a trè senplist, paske an reyalite seri aplikasyon pou sik yo pi laj. Gen de kalite prensipal bouk nan Python: pou ak pandan y ap. Ki pi popilè a se pou.

Anplis aksyon espesifik, ou ka bouk diferan moso nan kòd jiska yon sèten pwen. Sa a ka yon sèten kantite fwa, oswa osi lontan ke yon kondisyon patikilye se vre.

Anvan nou kòmanse konprann ki kalite bouk epi pandan ke, an patikilye, nou toujou bezwen konprann ki sa iterasyon ye. Sa a se yon repetisyon yon aksyon oswa yon sekans aksyon pandan sik aktyèl la nan aplikasyon aktyèl la.

Sik Pou

Bouk For nou an se pa yon kontwa, tankou nan anpil lòt lang. Travay li se enimere yon sekans sèten nan valè. Ki sa sa a vle di? Ann di nou gen yon lis eleman. Premyèman, bouk la pran premye, dezyèm, twazyèm, ak sou sa.

Avantaj nan bouk sa a nan Python se ke ou pa bezwen detèmine endèks la nan eleman nan konnen ki lè yo sòti bouk la. Tout bagay pral fèt otomatikman.

>>> spisok = [10, 40, 20, 30]

>>> pou eleman nan spisok:

… enprime (eleman + 2)

...

12

42

22

32

Nan egzanp nou an, nou itilize varyab la eleman apre kòmandman an. An jeneral, non an ka nenpòt bagay. Pa egzanp, yon deziyasyon popilè se i. Epi ak chak iterasyon, yo pral bay varyab sa a yon objè espesifik nan lis la, ke nou rele mo ki apwopriye a.

Nan ka nou an, lis la se yon sekans nimewo 10,40,20,30. Nan chak iterasyon, valè korespondan an parèt nan varyab la. Pou egzanp, le pli vit ke bouk la kòmanse, varyab la eleman yo bay valè 10 la. Nan pwochen iterasyon an, dis la vire nan nimewo a 40, twazyèm fwa a li vire nan nimewo a 20, epi finalman, nan dènye iterasyon nan bouk la, li vire nan 30.

Siyal la pou fen sik la se fen eleman ki nan lis la.

Si ou bezwen bouk la fè yon enimerasyon klasik nan valè, tankou nan lòt langaj pwogramasyon, ou ta dwe kreye yon lis ak yon sekans nimewo natirèl jiska valè nou bezwen an.

>>> spisok = [1,2,3,4,5]

Oswa itilize fonksyon an len(), pou detèmine longè lis la. Men, nan ka sa a li se pi bon yo sèvi ak yon bouk pandan ke, paske pa gen okenn nesesite pou itilize yon varyab.

Si ou bezwen chanje sekans valè nan lis la, bouk pou ak isit la vini nan sekou. Pou fè sa, nan chak iterasyon, yo dwe bay chak eleman nan lis la yon valè ki apwopriye.

Pandan ke Loop

Kontrèman ak sik la pou, ki tou senpleman repete sou valè yo nan sekans lan, bouk la pandan y ap gen plis itilizasyon. Non kalite sik sa yo tradui kòm "ankò". Sa vle di "jiskaske".

Sa a se yon bouk inivèsèl ki jwenn nan tout langaj pwogramasyon. Ak nan kèk fason li sanble ak yon operatè kondisyonèl if, ki fè yon chèk pou wè si yon sèten kondisyon satisfè. Se sèlman kontrèman ak operatè kondisyonèl la, pandan y ap fè chèk la nan chak iterasyon, pa sèlman yon fwa. Epi sèlman si kondisyon an se fo, bouk la fini ak lòd ki swiv li egzekite. Nan mo senp, si sitiyasyon kote l ap travay la pa valab ankò.

Si nou trase yon sik pandan y ap senplist, sa a se fè lè l sèvi avèk tankou yon konplo.pandan y ap bouk nan Python. Ki jan li fonksyone, egzanp itilizasyon

Branch prensipal pwogram nan (ki kouri deyò bouk la) montre nan figi sa a ak rektang ble. Turkwaz reprezante kò a nan sik la. Nan vire, yon lozanj se yon kondisyon ki tcheke nan chak iterasyon.

Sik pandan y ap ka lakòz de eksepsyon:

  1. Si nan kòmansman an nan bouk la ekspresyon ki lojik pa retounen vre, Lè sa a, li tou senpleman pa kòmanse, li te konplete anvan ekzekisyon. An jeneral, sitiyasyon sa a se nòmal, paske nan sèten sikonstans, aplikasyon an ka pa bay pou prezans nan ekspresyon nan kò a bouk.
  2. Si ekspresyon an toujou vre, sa ka mennen nan yon bouk. Sa vle di, nan defile a kontinuèl nan sik la. Se poutèt sa, nan pwogram sa yo, ta dwe toujou gen yon deklarasyon sòti nan bouk la oswa pwogram nan. Sepandan, sitiyasyon sa a pral rive si pwogram nan te kapab detèmine verite a oswa fo nan yon kondisyon patikilye. Si li echwe pou fè sa, Lè sa a, yon erè retounen ak revokasyon an nan pwogram nan. Oswa ou ka okipe erè a, ak Lè sa a, si li rive, sèten kòd yo pral egzekite.

Ka gen yon gwo kantite opsyon pou kijan pou jere yon erè. Pou egzanp, pwogram nan ka mande itilizatè a antre done kòrèkteman. Se konsa, si yon moun te endike yon nimewo negatif kote li kapab sèlman pozitif, oswa te antre nan lèt kote sèlman nimewo yo ta dwe, pwogram nan ka di sou li.

Pandan Egzanp Loop

Isit la se yon egzanp kòd ki okipe yon erè nan ka sa a.

n = D '("Antre yon nonb antye: ") 

pandan y ap tape (n) ! = int:

    Eseye:

        n = int(n)

    eksepte ValueError:

        enprime ("Move antre!")

        n = D '("Antre yon nonb antye: ") 

si n % 2 == 0:

    enprime ("Menm")

lòt bagay:

    enprime ("Enpè")

Kenbe nan tèt ou ke Python sèvi ak kolon pou deklare konstri kòd konplèks.

Nan kòd ki anwo a, nou defini kòm yon kondisyon ke nou ta dwe tcheke si nimewo a se yon nonb antye relatif. Si wi, lè sa a fo tounen. Si se pa sa, lè sa a vre.

Nan dezyèm pati kòd la, kote operatè a itilize if, nou itilize % operatè a pou jwenn rès la apre operasyon divizyon an. Pwochen etap la se tcheke si nimewo a se menm. Si ou pa, Lè sa a, rès la se youn nan ka sa a. An konsekans, nimewo a se enpè. 

An tèm senp, kòd ki anwo a an premye tcheke si fisèl itilizatè a antre se yon nimewo. Si wi, Lè sa a, yon dezyèm chèk fè pou wè si gen yon rès nan divizyon an pa de. Men, dezyèm blòk la pa pral egzekite jiskaske valè itilizatè a antre nan nimerik.

Sa vle di, bouk la pral regilyèman egzekite jiskaske kondisyon an rive. Nan sitiyasyon sa a, li travay tankou sa a. 

Sa vle di, ou ka ale nan opoze a: bouk yon aksyon sèten jiskaske evènman an vin fo.

Analiz kòd

Koulye a, kite a wè nan plis detay ki jan kòd sa a ap travay. Pou fè sa, nou pral analize li etap pa etap.

  1. Premyèman, itilizatè a antre nan yon fisèl, ki se aksepte pa varyab n. 
  2. Sèvi ak yon bouk pandan y ap yo tcheke kalite varyab sa a. Sou premye antre a, li pa egal int. Se poutèt sa, kòm rezilta tès la, li jwenn ke kondisyon sa a se vre. Se poutèt sa, se kò a bouk antre.
  3. Avèk èd nan yon operatè eseye nou ap eseye konvèti yon fisèl nan yon nimewo. Si sa fèt, pa gen okenn erè. An konsekans, pa gen okenn nesesite pou trete li. Se poutèt sa, entèprèt la retounen nan kòmansman an nan bouk la, epi dapre rezilta yo nan chèk la, li vire soti ke li te vin tounen yon nonb antye relatif. Se konsa, ann ale nan etap 7
  4. Si konvèsyon an pa t reyisi, Lè sa a, yon ValueError voye jete. Nan ka sa a, koule nan pwogram yo voye bay moun kap okipe a eksepte.
  5. Itilizatè a antre yon nouvo valè, ki asiyen nan varyab n.
  6. Entèprèt la retounen nan etap 2 epi tcheke ankò. Si se yon valè nonb antye relatif, ale nan etap 7. Si se pa sa, konvèsyon an eseye ankò dapre etap 3.
  7. Avèk èd nan yon operatè if Detèmine si gen yon rès apre divize yon nonm pa 2. 
  8. Si ou pa, tèks la "menm" retounen.
  9. Si ou pa, tèks "enpè" la retounen.

Konsidere kounye a yon egzanp konsa. Eseye detèmine konbyen fwa sik sa a pral pase?

total = 100 

mwen = 0

pandan mwen <5:

    n = int (antre ())

    total = total — n

    mwen = mwen + 1 

enprime ("Rete", total)

Repons ki kòrèk la se 5. Okòmansman, valè varyab la i - zewo. Entèprèt la tcheke si varyab la egal i 4 oswa mwens. Si wi, Lè sa a, valè a retounen. vrè, epi bouk la egzekite kòmsadwa. Valè a ogmante pa youn.

Apre premye iterasyon an, valè varyab la vin 1. Yon chèk fèt, epi pwogram nan konprann ke nimewo sa a ankò mwens pase 5. An konsekans, kò bouk la egzekite pou yon dezyèm fwa. Piske etap yo sanble, valè a ogmante tou pa youn, e kounye a varyab la egal a 2.

Valè sa a tou mwens pase senk. Lè sa a, bouk la egzekite yon twazyèm fwa, ajoute nan varyab la i 1 epi yo bay li valè 3. Sa a ankò mwens pase senk. Se konsa, li rive iterasyon an sizyèm nan bouk la, nan ki valè a nan varyab la i egal 5 (apre tout, li te orijinèlman zewo, osi lwen ke nou sonje). An konsekans, kondisyon sa a pa pase tès la, ak bouk la otomatikman sispann ak tranzisyon an nan pwochen etap la, ki se deyò li (oswa revokasyon pwogram, si etap sa yo pa bay), se te pote soti.

Sik la ka rive tou nan direksyon opoze a. Isit la se yon egzanp kòd kote, ak chak iterasyon ki vin apre yo, yo retire youn nan valè aktyèl la nan varyab la. 

total = 100 

pandan total > 0:

    n = int (antre ())

    total = total — n 

enprime ("Resous fin itilize")

Eseye devine kisa pwogram sa a fè! Imajine ke nan yon varyab total enfòmasyon sou resous pwogram nan estoke. Chak fwa entèprèt la tcheke si resous la egziste. Si ou pa, Lè sa a, tèks la "Resous fin itilize" parèt ak pwogram nan fèmen. Ak chak iterasyon nan bouk la, resous la diminye pa kantite itilizatè a espesifye.

Epi kounye a devwa lakay. Eseye chanje kòd ki anwo a pou varyab la pa ka fizikman vin negatif. 

4 Kòmantè

  1. si code ahaan usoo gudbi

Kite yon Reply