tra dolen yn Python. Sut mae'n gweithio, enghreifftiau o ddefnydd

Dolenni yw un o brif arfau unrhyw iaith. Mae dwy ddolen sylfaenol yn Python, ac un ohonynt yw tra. Ystyriwch y peth, a hefyd i gael gwell dealltwriaeth o'r llun, un arall. Yn wir, mewn cymhariaeth â rhywbeth tebyg, mae'n llawer haws deall unrhyw ddeunydd, ynte?

Y cysyniad o gylchred

Mae angen dolen pan fydd angen cyflawni gweithred benodol sawl gwaith. Mae hyn yn or-syml iawn, oherwydd mewn gwirionedd mae'r ystod o gymwysiadau ar gyfer cylchoedd yn llawer ehangach. Mae dau brif fath o ddolen yn Python: am a thra. Mae'r mwyaf poblogaidd ar gyfer.

Yn ogystal â chamau gweithredu penodol, gallwch ddolennu gwahanol ddarnau o god hyd at bwynt penodol. Gall hyn fod nifer penodol o weithiau, neu cyn belled â bod cyflwr penodol yn wir.

Cyn i ni ddechrau deall y mathau o ddolenni ac er, yn benodol, mae angen i ni ddeall beth yw iteriad o hyd. Dyma un ailadroddiad o weithred neu ddilyniant o gamau gweithredu yn ystod y cylch presennol o fewn y rhediad cymhwysiad cyfredol.

Beicio Ar Gyfer

Nid yw ein Dolen For yn cownter, fel mewn llawer o ieithoedd eraill. Ei dasg yw rhifo dilyniant penodol o werthoedd. Beth mae hyn yn ei olygu? Gadewch i ni ddweud bod gennym restr o elfennau. Yn gyntaf, mae'r ddolen yn cymryd y cyntaf, yr ail, y trydydd, ac yn y blaen.

Mantais y ddolen hon yn Python yw nad oes angen i chi benderfynu ar fynegai'r elfen i wybod pryd i adael y ddolen. Bydd popeth yn cael ei wneud yn awtomatig.

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

>>> ar gyfer elfen mewn spisok:

… print(elfen + 2)

...

12

42

22

32

Yn ein hesiampl, fe wnaethon ni ddefnyddio'r newidyn elfen ar ôl y gorchymyn. Yn gyffredinol, gall yr enw fod yn unrhyw beth. Er enghraifft, dynodiad poblogaidd yw i. A chyda phob iteriad, bydd y newidyn hwn yn cael gwrthrych penodol o'r rhestr, y gwnaethom ei alw'n air priodol.

Yn ein hachos ni, mae'r rhestr yn ddilyniant o rifau 10,40,20,30. Ar bob iteriad, mae'r gwerth cyfatebol yn ymddangos yn y newidyn. Er enghraifft, cyn gynted ag y bydd y ddolen yn dechrau, y newidyn elfen mae'r gwerth 10 wedi'i neilltuo. Ar yr iteriad nesaf, mae'r deg yn troi i mewn i'r rhif 40, y trydydd tro mae'n troi i mewn i'r rhif 20, ac yn olaf, ar iteriad olaf y ddolen, mae'n troi'n 30.

Y signal ar gyfer diwedd y gylchred yw diwedd yr elfennau yn y rhestr.

Os oes angen y ddolen arnoch i berfformio rhifiad clasurol o werthoedd, fel mewn ieithoedd rhaglennu eraill, dylech greu rhestr gyda dilyniant o rifau naturiol hyd at y gwerth sydd ei angen arnom.

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

Neu defnyddiwch y swyddogaeth len(), i benderfynu hyd y rhestr. Ond yn yr achos hwn mae'n well defnyddio dolen tra, oherwydd nid oes angen defnyddio newidyn.

Os oes angen i chi newid y dilyniant o werthoedd yn y rhestr, dolen ar gyfer ac yma daw i'r adwy. I wneud hyn, ym mhob iteriad, rhaid rhoi gwerth priodol i bob elfen o'r rhestr.

Tra Dolen

Yn wahanol i'r cylch ar gyfer, sy'n ailadrodd yn syml dros werthoedd y dilyniant, y ddolen tra yn cael mwy o ddefnyddiau. Mae enw'r math hwn o gylchoedd yn cael ei gyfieithu fel "eto". Hynny yw, “tan”.

Dolen gyffredinol yw hon sydd i'w chael ym mhob iaith raglennu. Ac mewn rhai ffyrdd mae'n debyg i weithredwr amodol yw, sy'n cynnal gwiriad i weld a yw amod penodol yn cael ei fodloni. Dim ond yn wahanol i'r gweithredwr amodol, tra yn perfformio'r siec ar bob iteriad, nid unwaith yn unig. A dim ond os yw'r cyflwr yn ffug, daw'r ddolen i ben a gweithredir y gorchymyn sy'n ei ddilyn. Mewn geiriau syml, os nad yw'r sefyllfa y mae'n gweithio ynddi bellach yn ddilys.

Os byddwn yn tynnu cylch tra yn or-syml, gwneir hyn gan ddefnyddio cynllun o'r fath.tra dolen yn Python. Sut mae'n gweithio, enghreifftiau o ddefnydd

Mae prif gangen y rhaglen (sy'n rhedeg y tu allan i'r ddolen) yn cael ei darlunio yn y ffigur hwn gyda phetryal glas. Mae turquoise yn cynrychioli corff y cylch. Yn ei dro, mae rhombws yn gyflwr sy'n cael ei wirio ym mhob iteriad.

Beicio tra Gall arwain at ddau eithriad:

  1. Os nad yw'r mynegiant rhesymegol yn dychwelyd yn wir ar ddechrau'r ddolen, yna nid yw'n dechrau, ar ôl ei gwblhau cyn ei weithredu. Yn gyffredinol, mae'r sefyllfa hon yn normal, oherwydd o dan rai amgylchiadau, efallai na fydd y cais yn darparu ar gyfer presenoldeb ymadroddion yn y corff dolen.
  2. Os yw'r mynegiant bob amser yn wir, gall hyn arwain at ddolen. Hynny yw, i sgrolio diddiwedd y cylch. Felly, mewn rhaglenni o'r fath, dylai fod datganiad ymadael o'r ddolen neu'r rhaglen bob amser. Fodd bynnag, bydd y sefyllfa hon yn codi pe bai'r rhaglen yn gallu pennu gwirionedd neu anwiredd cyflwr penodol. Os na wnaeth hi wneud hyn, yna dychwelir gwall gyda therfyniad y rhaglen. Neu gallwch drin y gwall, ac yna, os bydd yn digwydd, bydd cod penodol yn cael ei weithredu.

Gall fod nifer enfawr o opsiynau ar gyfer sut i drin gwall. Er enghraifft, efallai y bydd y rhaglen yn gofyn i'r defnyddiwr fewnbynnu data yn gywir. Felly, pe bai person yn nodi rhif negyddol lle gall fod yn bositif yn unig, neu'n nodi llythrennau lle mai dim ond rhifau ddylai fod, gall y rhaglen ddweud amdano.

Tra Enghreifftiau Dolen

Dyma enghraifft o god sy'n delio â gwall yn yr achos hwn.

n = mewnbwn("Rhowch gyfanrif: ") 

tra math(n)!= int:

    Rhowch gynnig ar:

        n = int(n)

    ac eithrio ValueError:

        print ("Mynediad anghywir!")

        n = mewnbwn("Rhowch gyfanrif: ") 

os n % 2 == 0 :

    print ("Hyd yn oed")

arall:

    print ("Odd")

Cofiwch fod Python yn defnyddio colonau i ddatgan lluniadau cod cymhleth.

Yn y cod uchod, fe wnaethom ddiffinio fel amod y dylem wirio a yw'r rhif yn gyfanrif. Os oes, yna dychwelir ffug. Os na, yna gwir.

Yn ail ran y cod, lle mae'r gweithredwr yn cael ei ddefnyddio if, gwnaethom ddefnyddio'r % gweithredwr i ddod o hyd i'r gweddill ar ôl y llawdriniaeth rannu. Y cam nesaf yw gwirio a yw'r rhif yn eilrif. Os na, yna mae'r gweddill yn un yn yr achos hwn. Yn unol â hynny, mae'r nifer yn od. 

Yn syml, mae'r cod uchod yn gwirio'n gyntaf a yw'r llinyn a gofnodwyd gan y defnyddiwr yn rhif. Os oes, yna gwneir ail wiriad i weld a oes gweddill y rhaniad fesul dau. Ond ni fydd yr ail floc yn cael ei weithredu nes bod y gwerth a gofnodwyd gan y defnyddiwr yn rhifol.

Hynny yw, bydd y ddolen yn cael ei gweithredu'n rheolaidd nes bod yr amod yn digwydd. Yn y sefyllfa hon, mae'n gweithio fel hyn. 

Hynny yw, gallwch chi fynd o'r gwrthwyneb: dolen weithred benodol nes bod y digwyddiad yn dod yn ffug.

Dosrannu cod

Nawr gadewch i ni weld yn fwy manwl sut mae'r cod hwn yn gweithio. I wneud hyn, byddwn yn ei ddadansoddi gam wrth gam.

  1. Yn gyntaf, mae'r defnyddiwr yn mynd i mewn i linyn, a dderbynnir gan y newidyn n. 
  2. Gan ddefnyddio dolen tra y math o newidyn hwn yn cael ei wirio. Ar y cofnod cyntaf, nid yw'n gyfartal int. Felly, o ganlyniad i'r prawf, canfyddir bod yr amod hwn yn wir. Felly, mae'r corff dolen yn mynd i mewn.
  3. Gyda chymorth gweithredwr ceisiwch rydym yn ceisio trosi llinyn i rif. Os gwneir hyn, yna ni fydd unrhyw gamgymeriad. Yn unol â hynny, nid oes angen ei brosesu. Felly, mae'r cyfieithydd yn dychwelyd i ddechrau'r ddolen, ac yn ôl canlyniadau'r gwiriad, mae'n troi allan ei fod wedi dod yn gyfanrif. Felly gadewch i ni fynd i gam 7
  4. Os oedd y trosiad yn aflwyddiannus, yna mae ValueError yn cael ei daflu. Yn yr achos hwn, anfonir llif y rhaglen at y triniwr eithrio.
  5. Mae'r defnyddiwr yn mewnbynnu gwerth newydd, sy'n cael ei neilltuo i'r newidyn n.
  6. Mae'r cyfieithydd yn dychwelyd i gam 2 ac yn gwirio eto. Os yw'n werth cyfanrif, ewch i gam 7. Os na, ceisir y trosi eto yn ôl cam 3.
  7. Gyda chymorth gweithredwr if Penderfynu a oes gweddill ar ôl rhannu rhif â 2. 
  8. Os na, dychwelir y testun “eilrifol”.
  9. Os na, dychwelir y testun “od”.

Ystyriwch yn awr enghraifft o'r fath. Ceisiwch benderfynu sawl gwaith y bydd y cylch hwn yn mynd drwyddo?

cyfanswm = 100 

i = 0

tra dwi <5:

    n = int(mewnbwn())

    cyfanswm = cyfanswm — n

    i = i + 1 

print ("Gweddill", cyfanswm)

Yr ateb cywir yw 5. I ddechrau, gwerth y newidyn i - sero. Mae'r cyfieithydd yn gwirio a yw'r newidyn yn gyfartal i 4 neu lai. Os oes, yna dychwelir y gwerth. yn wir, a gweithredir y ddolen yn unol â hynny. Cynyddir y gwerth o un.

Ar ôl yr iteriad cyntaf, mae gwerth y newidyn yn dod yn 1. Perfformir gwiriad, ac mae'r rhaglen yn deall bod y rhif hwn eto yn llai na 5. Yn unol â hynny, gweithredir y corff dolen am yr ail dro. Gan fod y camau'n debyg, mae'r gwerth hefyd yn cynyddu o un, ac mae'r newidyn bellach yn hafal i 2.

Mae'r gwerth hwn hefyd yn llai na phump. Yna gweithredir y ddolen y trydydd tro, wedi'i hychwanegu at y newidyn i 1 a rhoddir y gwerth 3 iddo. Mae hyn eto yn llai na phump. Ac felly mae'n dod i chweched iteriad y ddolen, y mae gwerth y newidyn i yn hafal i 5 (wedi'r cyfan, roedd yn wreiddiol sero, cyn belled ag y cofiwn). Yn unol â hynny, nid yw'r amod hwn yn pasio'r prawf, a therfynir y ddolen yn awtomatig a chynhelir y trosglwyddiad i'r cam nesaf, sydd y tu allan iddo (neu derfyniad rhaglen, os na ddarperir y camau canlynol).

Gall y cylch hefyd ddigwydd i'r cyfeiriad arall. Dyma enghraifft o god lle, gyda phob iteriad dilynol, mae un yn cael ei dynnu o werth cyfredol y newidyn. 

cyfanswm = 100 

tra bod cyfanswm > 0:

    n = int(mewnbwn())

    cyfanswm = cyfanswm — n 

print ("Adnodd dihysbyddu")

Ceisiwch ddyfalu beth mae'r rhaglen hon yn ei wneud! Dychmygwch hynny mewn newidyn cyfanswm gwybodaeth am adnodd y rhaglen yn cael ei storio. Bob tro bydd y cyfieithydd yn gwirio a yw'r adnodd yn bodoli. Os na, yna mae'r testun “Resource wedi dihysbyddu” yn cael ei arddangos ac mae'r rhaglen yn cau. A chyda phob iteriad o'r ddolen, mae'r adnodd yn lleihau gan y nifer y mae'r defnyddiwr yn ei nodi.

Ac yn awr gwaith cartref. Ceisiwch newid y cod uchod fel na all y newidyn ddod yn negyddol yn gorfforol. 

4 Sylwadau

  1. si cod ahaan usoo gudbi

Gadael ymateb