while loop f'Python. Kif taħdem, eżempji ta 'użu

Loops huma waħda mill-għodod ewlenin ta 'kwalunkwe lingwa. Hemm żewġ loops bażiċi f'Python, li waħda minnhom hija while. Ikkunsidraha, u wkoll għal fehim aħjar tal-istampa, waħda oħra. Tabilħaqq, meta mqabbel ma 'xi ħaġa simili, huwa ħafna aktar faċli li wieħed jifhem kwalunkwe materjal, hux?

Il-kunċett ta 'ċiklu

Hija meħtieġa linja meta ċerta azzjoni trid titwettaq diversi drabi. Dan huwa simplistiku ħafna, għaliex fir-realtà l-firxa ta 'applikazzjonijiet għaċ-ċikli hija ħafna usa'. Hemm żewġ tipi ewlenin ta 'loops f'Python: għal u filwaqt. L-aktar popolari huwa għal.

Minbarra azzjonijiet speċifiċi, tista 'loop biċċiet differenti ta' kodiċi sa ċertu punt. Dan jista 'jkun ċertu numru ta' drabi, jew sakemm kundizzjoni partikolari tkun vera.

Qabel ma nibdew nifhmu t-tipi ta 'loops u filwaqt li, b'mod partikolari, għad għandna bżonn nifhmu x'inhi l-iterazzjoni. Din hija ripetizzjoni waħda ta' azzjoni jew sekwenza ta' azzjonijiet matul iċ-ċiklu attwali fi ħdan il-ġirja attwali tal-applikazzjoni.

Ċiklu Għal

Il-linja For tagħna mhix counter, bħal f'ħafna lingwi oħra. Il-kompitu tiegħu huwa li jelenka ċerta sekwenza ta' valuri. Xi jfisser dan? Ejja ngħidu li għandna lista ta 'elementi. L-ewwel, il-linja tieħu l-ewwel, it-tieni, it-tielet, eċċ.

Il-vantaġġ ta 'dan il-linja f'Python huwa li m'għandekx bżonn tiddetermina l-indiċi tal-element biex tkun taf meta toħroġ mill-linja. Kollox se jsir awtomatikament.

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

>>> għal element fi spisok:

… print(element + 2)

...

12

42

22

32

Fl-eżempju tagħna, użajna l-varjabbli element wara l-for kmand. B'mod ġenerali, l-isem jista 'jkun xi ħaġa. Pereżempju, nomina popolari hija i. U ma 'kull iterazzjoni, din il-varjabbli se tiġi assenjata oġġett speċifiku mil-lista, li sejjaħna l-kelma xierqa.

Fil-każ tagħna, il-lista hija sekwenza ta 'numri 10,40,20,30. F'kull iterazzjoni, il-valur korrispondenti jidher fil-varjabbli. Per eżempju, hekk kif jibda l-linja, il-varjabbli element il-valur 10 huwa assenjat. Fl-iterazzjoni li jmiss, l-għaxar jinbidel fin-numru 40, it-tielet darba jinbidel fin-numru 20, u finalment, fl-aħħar iterazzjoni tal-linja, jinbidel fi 30.

Is-sinjal għat-tmiem taċ-ċiklu huwa t-tmiem tal-elementi fil-lista.

Jekk għandek bżonn il-linja biex twettaq enumerazzjoni klassika ta 'valuri, bħal f'lingwi ta' programmar oħra, għandek toħloq lista b'sekwenza ta 'numri naturali sal-valur li għandna bżonn.

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

Jew uża l-funzjoni len(), biex jiddetermina t-tul tal-lista. Iżda f'dan il-każ huwa aħjar li tuża linja filwaqt li, għaliex m'hemmx bżonn li tuża varjabbli.

Jekk għandek bżonn tibdel is-sekwenza ta 'valuri fil-lista, loop għall u hawn jiġi għall-salvataġġ. Biex tagħmel dan, f'kull iterazzjoni, kull element tal-lista għandu jiġi assenjat valur xieraq.

Filwaqt Loop

B'differenza miċ-ċiklu għall, li sempliċement itenni fuq il-valuri tas-sekwenza, il-linja filwaqt li għandha aktar użi. L-isem ta 'dan it-tip ta' ċikli huwa tradott bħala "għad". Jiġifieri, "sa".

Din hija linja universali li tinsab fil-lingwi ta 'programmar kollha. U f'ċerti modi tixbaħ operatur kondizzjonali yew, li twettaq verifika biex tara jekk ċerta kundizzjoni tkunx sodisfatta. B'kuntrast mal-operatur kundizzjonali biss, filwaqt li iwettaq il-kontroll f'kull iterazzjoni, mhux darba biss. U biss jekk il-kundizzjoni hija falza, il-linja tispiċċa u l-kmand li jsegwiha jiġi esegwit. Fi kliem sempliċi, jekk is-sitwazzjoni li fiha jaħdem ma tibqax valida.

Jekk niġbdu ċiklu filwaqt li simplistikament, dan isir bl-użu ta 'skema bħal din.while loop f'Python. Kif taħdem, eżempji ta 'użu

Il-fergħa ewlenija tal-programm (li timxi 'l barra mill-linja) hija murija f'din il-figura b'rettangoli blu. Turquoise jirrappreżenta l-korp taċ-ċiklu. Min-naħa tiegħu, rhombus hija kundizzjoni li tiġi kkontrollata f'kull iterazzjoni.

Cycle filwaqt li jista' jirriżulta f'żewġ eċċezzjonijiet:

  1. Jekk fil-bidu tal-linja l-espressjoni loġika ma terġax lura vera, allura sempliċement ma tibda, wara li tkun tlestiet qabel l-eżekuzzjoni. B'mod ġenerali, din is-sitwazzjoni hija normali, minħabba li taħt ċerti ċirkostanzi, l-applikazzjoni tista 'ma tipprovdix għall-preżenza ta' espressjonijiet fil-korp tal-linja.
  2. Jekk l-espressjoni hija dejjem vera, dan jista 'jwassal għal loop. Jiġifieri, għall-iskrolljar bla tarf taċ-ċiklu. Għalhekk, fi programmi bħal dawn, dejjem għandu jkun hemm dikjarazzjoni ta 'ħruġ mil-linja jew programm. Madankollu, din is-sitwazzjoni tinħoloq jekk il-programm kien kapaċi jiddetermina l-verità jew il-falsità ta 'kundizzjoni partikolari. Jekk hija naqset milli tagħmel dan, allura żball jiġi rritornat mat-terminazzjoni tal-programm. Jew tista 'timmaniġġja l-iżball, u mbagħad, jekk iseħħ, ċertu kodiċi se jiġi esegwit.

Jista 'jkun hemm numru kbir ta' għażliet dwar kif timmaniġġja żball. Pereżempju, il-programm jista' jitlob lill-utent biex idaħħal id-dejta b'mod korrett. Għalhekk, jekk persuna indikat numru negattiv fejn jista 'jkun biss pożittiv, jew daħħal ittri fejn għandhom ikunu numri biss, il-programm jista' jgħid dwaru.

Filwaqt Eżempji Loop

Hawn eżempju ta 'kodiċi li jimmaniġġa żball f'dan il-każ.

n = input ("Daħħal numru sħiħ: ") 

filwaqt li tip(n) != int:

    Ipprova:

        n = int(n)

    minbarra ValueError:

        print ("Dħul ħażin!")

        n = input ("Daħħal numru sħiħ: ") 

jekk n % 2 == 0:

    print ("Anke")

inkella:

    print ("Bird")

Żomm f'moħħok li Python juża kolons biex jiddikjara kostruzzjonijiet kumplessi tal-kodiċi.

Fil-kodiċi ta 'hawn fuq, iddefinijna bħala kundizzjoni li għandna niċċekkjaw jekk in-numru huwiex numru sħiħ. Jekk iva, allura falz jiġi rritornat. Jekk le, allura veru.

Fit-tieni parti tal-kodiċi, fejn jintuża l-operatur if, użajna l-operatur % biex insibu l-bqija wara l-operazzjoni tad-diviżjoni. Il-pass li jmiss huwa li tivverifika jekk in-numru huwiex ugwali. Jekk le, allura l-bqija huwa wieħed f'dan il-każ. Għaldaqstant, in-numru huwa fard. 

F'termini sempliċi, il-kodiċi ta 'hawn fuq l-ewwel jiċċekkja jekk is-sekwenza mdaħħla mill-utent hijiex numru. Jekk iva, imbagħad issir it-tieni verifika biex tara jekk hemmx fadal tad-diviżjoni bi tnejn. Iżda t-tieni blokk mhux se jiġi esegwit sakemm il-valur imdaħħal mill-utent ikun numeriku.

Jiġifieri, il-linja se tiġi eżegwita regolarment sakemm isseħħ il-kundizzjoni. F'din is-sitwazzjoni, taħdem bħal din. 

Jiġifieri, tista 'tmur mill-oppost: loop ċerta azzjoni sakemm l-avveniment isir falz.

Parsing tal-kodiċi

Issa ejja naraw f'aktar dettall kif jaħdem dan il-kodiċi. Biex tagħmel dan, aħna se nanalizzaw pass pass.

  1. L-ewwel, l-utent idaħħal string, li hija aċċettata mill-varjabbli n. 
  2. Bl-użu ta 'linja filwaqt li it-tip ta' din il-varjabbli huwa kkontrollat. Fuq l-ewwel dħul, mhuwiex ugwali int. Għalhekk, bħala riżultat tat-test, instab li din il-kundizzjoni hija vera. Għalhekk, jiddaħħal il-korp tal-linja.
  3. Bl-għajnuna ta 'operatur jippruvaw qed nippruvaw nikkonverti string għal numru. Jekk isir dan, allura ma jseħħ l-ebda żball. Għaldaqstant, m'hemmx bżonn li tiġi pproċessata. Għalhekk, l-interpretu jirritorna għall-bidu tal-linja, u skont ir-riżultati tal-kontroll, jirriżulta li sar numru sħiħ. Mela ejja mmorru għall-pass 7
  4. Jekk il-konverżjoni ma rnexxietx, allura ValueError jintrema. F'dan il-każ, il-fluss tal-programm jintbagħat lill-handler ħlief.
  5. L-utent idaħħal valur ġdid, li huwa assenjat għall-varjabbli n.
  6. L-interpretu jerġa’ lura għall-pass 2 u jerġa’ jiċċekkja. Jekk huwa valur sħiħ, mur għall-pass 7. Jekk le, il-konverżjoni terġa' tiġi ppruvata skont il-pass 3.
  7. Bl-għajnuna ta 'operatur if Jiddetermina jekk hemmx fdal wara li jiġi diviż numru bi 2. 
  8. Jekk le, it-test "anke" jintbagħat lura.
  9. Jekk le, it-test "fard" jintbagħat lura.

Ikkunsidra issa eżempju bħal dan. Ipprova tiddetermina kemm-il darba se jgħaddi dan iċ-ċiklu?

totali = 100 

i = 0

filwaqt li i < 5:

    n = int(input())

    totali = totali — n

    i = i + 1 

print ("Fdal", total)

It-tweġiba t-tajba hija 5. Inizjalment, il-valur tal-varjabbli i – żero. L-interpretu jiċċekkja jekk il-varjabbli hijiex ugwali i 4 jew inqas. Jekk iva, allura l-valur jiġi rritornat. veru, u l-linja hija esegwita kif xieraq. Il-valur jiżdied b'wieħed.

Wara l-ewwel iterazzjoni, il-valur tal-varjabbli jsir 1. Twettaq verifika, u l-programm jifhem li dan in-numru huwa għal darb'oħra inqas minn 5. Għaldaqstant, il-korp tal-linja jiġi esegwit għat-tieni darba. Peress li l-passi huma simili, il-valur jiżdied ukoll b'wieħed, u l-varjabbli issa hija ugwali għal 2.

Dan il-valur huwa wkoll inqas minn ħamsa. Imbagħad il-linja tiġi esegwita għat-tielet darba, miżjuda mal-varjabbli i 1 u huwa assenjat il-valur 3. Dan għal darb'oħra huwa inqas minn ħamsa. U għalhekk niġu għas-sitt iterazzjoni tal-linja, li fiha l-valur tal-varjabbli i ugwali għal 5 (wara kollox, oriġinarjament kien żero, sa fejn niftakru). Għaldaqstant, din il-kundizzjoni ma tgħaddix mit-test, u l-linja tintemm awtomatikament u titwettaq it-tranżizzjoni għall-pass li jmiss, li huwa barra minnha (jew it-terminazzjoni tal-programm, jekk il-passi li ġejjin ma jiġux ipprovduti).

Iċ-ċiklu jista 'jseħħ ukoll fid-direzzjoni opposta. Hawn eżempju ta 'kodiċi fejn, ma' kull iterazzjoni sussegwenti, wieħed jitnaqqas mill-valur kurrenti tal-varjabbli. 

totali = 100 

filwaqt li total > 0:

    n = int(input())

    totali = totali — n 

print("Riżorsi eżawriti")

Ipprova raden x'jagħmel dan il-programm! Immaġina li f'varjabbli totali informazzjoni dwar ir-riżors tal-programm hija maħżuna. Kull darba li l-interpretu jiċċekkja jekk ir-riżorsa teżistix. Jekk le, allura jintwera t-test "Riżorsi eżawriti" u l-programm jagħlaq. U ma 'kull iterazzjoni tal-linja, ir-riżors tonqos bin-numru li l-utent jispeċifika.

U issa huiswerk. Ipprova ibdel il-kodiċi ta 'hawn fuq sabiex il-varjabbli ma tistax fiżikament issir negattiva. 

4 Kummenti

  1. si code ahaan usoo gudbi

Ħalli Irrispondi