Amodol os datganiad yn Python. Cystrawen, arall/blociau elif, enghreifftiau

Yn y broses o ddysgu sut i raglennu, yn aml mae angen creu rhaglenni nad ydynt mor hawdd eu cymhwyso mewn bywyd go iawn. Wedi'r cyfan, o bryd i'w gilydd mae'n rhaid i chi ddilyn cyfarwyddiadau o dan amodau penodol yn unig. Er mwyn gallu gweithredu hyn yn y rhaglen, mae gan bob iaith ddatganiadau rheoli. Gyda'u cymorth, dim ond pan fydd cyflwr penodol yn wir y gallwch chi reoli llif gweithredu cod, creu dolenni neu berfformio rhai gweithredoedd.

Heddiw, byddwn yn siarad am y datganiad os, sy'n gwirio'r sefyllfa bresennol ar gyfer cyflwr penodol, ac yn seiliedig ar y wybodaeth hon, yn gwneud penderfyniadau am gamau gweithredu pellach.

Mathau o Ddatganiadau Rheoli

Yn gyffredinol, os nad dyma'r unig ddatganiad sy'n rheoli llif rhaglen. Yn ogystal ag ef ei hun, gall fod yn rhan o gadwyn fwy o weithredwyr.

Mae yna hefyd ddolenni a datganiadau sy'n rheoli'r broses o'i gweithredu. Heddiw, byddwn ond yn siarad am y gweithredwr amodol a'r cadwyni y gall gymryd rhan ynddynt.

Mewn rhaglennu, mae yna'r fath beth â changhennu. Dyma'n union sy'n golygu dilyniant o orchmynion a weithredir dim ond os yw amod penodol yn wir. Gall y meini prawf eu hunain fod yn wahanol:

  1. Cyfartaledd newidyn i werth penodol.
  2. Cyflawni gweithred benodol.
  3. Cyflwr y cais (wedi cwympo ai peidio).

Gall y sbectrwm fod yn llawer mwy. Daw datganiadau amodol mewn sawl math:

  1. Gydag un gangen. Hynny yw, cynhelir un gwiriad, ac o ganlyniad cyflawnir rhai gweithredoedd.
  2. Gyda dwy neu fwy o ganghennau. Os yw maen prawf 1 yn wir, yna gwiriwch faen prawf 2. Os yw'n wir, yna gwiriwch 3. Ac felly, gwnewch gymaint o wiriadau ag sy'n ofynnol.
  3. Gyda nifer o amodau. Mae popeth yn syml yma. Mae'r cyfieithydd yn gwirio am gyflyrau lluosog neu un ohonynt.

os datganiad

Mae strwythur y datganiad if yn debyg ym mhob iaith. Fodd bynnag, yn Python, mae ei gystrawen ychydig yn wahanol i'r lleill i gyd:

os cyflwr:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

Yn gyntaf, mae'r gweithredwr ei hun yn cael ei ddatgan, ac ar ôl hynny mae'r amod y mae'n dechrau gweithio yn cael ei ysgrifennu. Gall y cyflwr fod naill ai'n wir neu'n anghywir.

Dilynir hyn gan bloc gyda gorchmynion. Os yw'n dilyn maen prawf i'w fodloni ar unwaith, yna gelwir y dilyniant cyfatebol o orchmynion yn bloc if. Gallwch ddefnyddio unrhyw nifer o orchmynion ynddo.

Sylw! Rhaid i'r mewnoliad o fewn pob gorchymyn bloc fod yr un maint. Mae ffiniau'r blociau yn cael eu pennu gan y mewnoliadau. 

Yn ôl y ddogfennaeth iaith, mae'r mewnoliad yn 4 gofod. 

Sut mae'r gweithredwr hwn yn gweithio? Pan fydd y cyfieithydd yn gweld y gair os, mae'n gwirio'r ymadrodd ar unwaith yn erbyn y meini prawf a bennir gan y defnyddiwr. Os yw hyn yn wir, yna mae'n dechrau chwilio am gyfarwyddiadau a'u dilyn. Fel arall, mae pob gorchymyn o'r bloc hwn yn cael ei hepgor.

Os na chaiff datganiad ar ôl y cyflwr ei fewnoli, ni chaiff ei drin fel bloc if. Yn ein sefyllfa ni, mae'r llinell hon . Felly, waeth beth fo canlyniad y siec, bydd y llinell hon yn cael ei gweithredu.

Dyma snippet cod ar gyfer enghraifft o sut mae'r gweithredwr hwn yn gweithio.

rhif = int(mewnbwn("Rhowch rif: "))

os rhif > 10:

    print ("Mae'r rhif yn fwy na 10")

Mae'r rhaglen hon yn annog y defnyddiwr am rif ac yn gwirio a yw'n fwy na 10. Os felly, mae'n dychwelyd y wybodaeth briodol. Er enghraifft, os yw'r defnyddiwr yn mynd i mewn i'r rhif 5, yna bydd y rhaglen yn dod i ben yn syml, a dyna ni.

Ond os nodwch y rhif 100, yna bydd y cyfieithydd yn deall ei fod yn fwy na deg, ac yn adrodd amdano.

Sylw! Yn ein hachos ni, os yw'r cyflwr yn ffug, mae'r rhaglen yn dod i ben, oherwydd ni roddir unrhyw orchmynion ar ôl y cyfarwyddyd.

Dim ond un gorchymyn sydd yn y cod uchod. Ond mae yna lawer mwy ohonyn nhw. Yr unig ofyniad yw mewnoli.

Nawr, gadewch i ni ddadansoddi'r dilyniant hwn o orchmynion.

rhif = int(mewnbwn("Ysgrifennwch rif: "))

os rhif > 10:

    print ("llinell gyntaf")

    print ("ail linell")

    print ("trydedd llinell")

print (“Y llinell a weithredir, waeth beth fo’r nifer a gofnodwyd”)

argraffu ("Diwedd cais")

Ceisiwch ddyfalu beth fydd yr allbwn os rhowch y gwerthoedd 2, 5, 10, 15, 50 i mewn.

Fel y gallwch weld, os yw'r rhif a gofnodwyd gan y defnyddiwr yn fwy na deg, yna tair llinell yw allbwn + un gyda'r testun "Rhedeg bob tro ..." ac un "Diwedd", ac os yw'n llai na deg, yna dim ond un, gyda testun gwahanol. Dim ond llinellau 3,4,5 fydd yn cael eu gweithredu os yn wir. Fodd bynnag, bydd y ddwy linell olaf yn cael eu hysgrifennu ni waeth pa rif a bennir gan y defnyddiwr.

Os ydych chi'n defnyddio'r datganiadau yn uniongyrchol yn y consol, bydd y canlyniad yn wahanol. Mae'r cyfieithydd ar unwaith yn troi'r modd aml-linell ymlaen os, ar ôl nodi'r maen prawf dilysu, pwyswch Enter.

Tybiwch ein bod wedi ysgrifennu'r dilyniant canlynol o orchmynion.

>>>

>>> n = 100

>>> os n > 10:

...

Ar ôl hynny, byddwn yn gweld bod >>> wedi'i ddisodli gan ellipsis. Mae hyn yn golygu bod y modd mewnbwn aml-linell wedi'i alluogi. Mewn geiriau syml, os gwasgwch Enter, cewch eich trosglwyddo i fewnbwn ail gam y cyfarwyddyd. 

Ac er mwyn gadael y bloc hwn, mae angen ichi ychwanegu un adeiladwaith arall at y bloc if.

>>>

>>> n = 100

>>> os n > 10:

… print(«nv 10»)

...

Os nad yw'r cyflwr yn wir, daw'r rhaglen i ben. Mae hyn yn broblem, oherwydd gall y defnyddiwr ganfod bod rhaglen o'r fath wedi cau oherwydd methiant. Felly, mae angen rhoi adborth i'r defnyddiwr. Ar gyfer hyn, defnyddir dolen os-arall.

gweithredydd mynegiant os-arall

Mae'r gweithredwr hwn yn caniatáu ichi weithredu dolen: os yw'r ymadrodd yn cyd-fynd â rheol benodol, gwnewch y gweithredoedd hyn, ac os na, yna eraill. Hynny yw, mae'n caniatáu ichi rannu llif y rhaglen yn ddwy ffordd. Mae'r gystrawen yn reddfol:

os cyflwr:

    # os bloc

    datganiad 1

    datganiad 2

    ac yn y blaen

arall:

    # bloc arall

    datganiad 3

    datganiad 4

    ac yn y blaen:

Gadewch i ni egluro sut mae'r gweithredwr hwn yn gweithio. Yn gyntaf, gweithredir y datganiad safonol yn yr edefyn yw, gwirio a yw'n cyfateb cyflwr "cywir neu anghywir". Mae camau gweithredu pellach yn dibynnu ar ganlyniadau'r gwiriad. Os yn wir, gweithredir y cyfarwyddyd sydd yn y dilyniant o gyfarwyddiadau yn dilyn yr amod yn uniongyrchol. yw, os yw'n anwir, yna arall

Fel hyn gallwch chi drin gwallau. Er enghraifft, mae angen i'r defnyddiwr fynd i mewn i radiws. Yn amlwg, dim ond rhif ag arwydd plws y gall fod, neu mae'n werth nwl. Os yw'n llai na 0, yna mae angen i chi gyhoeddi neges yn gofyn ichi nodi rhif positif. 

Dyma'r cod sy'n gweithredu'r dasg hon. Ond mae un camgymeriad yma. Ceisiwch ddyfalu pa un. 

radiws = int(mewnbwn("Rhowch radiws: "))

os yw radiws >= 0:

    print(“Circumference = “, 2 * 3.14 * radiws)

    print(“Ardal = “, 3.14 * radiws ** 2)

    arall:

        print (“Rhowch rif positif”)

Gwall diffyg cyfatebiaeth mewnoliad. Os ydw i rhaid eu lleoli hebddynt neu gyda'r un nifer ohonynt (yn dibynnu a ydynt yn nythu ai peidio).

Gadewch i ni roi achos defnydd arall (lle bydd popeth yn gywir gydag aliniad gweithredwr) - elfen gais sy'n gwirio cyfrinair.

cyfrinair = mewnbwn("Rhowch gyfrinair:")

os yw cyfrinair == «sshh»:

    print ("Croeso")

arall:

    print ("Gwrthodwyd mynediad")

Mae'r cyfarwyddyd hwn yn hepgor y person ymhellach os yw'r cyfrinair yn sshh. Os oes unrhyw gyfuniad arall o lythrennau a rhifau, yna mae'n dangos y neges “Gwrthodwyd mynediad”.

datganiad-mynegiant os-elif-arall

Dim ond os nad yw sawl amod yn wir, mae'r datganiad sydd yn y bloc yn cael ei weithredu. arall. Mae'r ymadrodd hwn yn gweithio fel hyn.

os cyflwr_1:

    # os bloc

    datganiad

    datganiad

    mwy o ddatganiad

cyflwr elif_2:

    # bloc elif cyntaf

    datganiad

    datganiad

    mwy o ddatganiad

cyflwr elif_3:

    # eiliad bloc elif

    datganiad

    datganiad

    mwy o ddatganiad

...

arall

    datganiad

    datganiad

    mwy o ddatganiad

Gallwch nodi unrhyw nifer o amodau ychwanegol.

Datganiadau nythu

Ffordd arall o weithredu amodau lluosog yw mewnosod gwiriadau cyflwr ychwanegol yn y bloc if.

Gweithredwr if tu mewn bloc cyflwr arall

gre_score = int(mewnbwn("Rhowch eich terfyn credyd cyfredol"))

per_grad = int(mewnbwn(“Rhowch eich statws credyd: “))

os fesul_grad> 70:

    # allanol os bloc

        os gre_sgor> 150:

            # mewnol os bloc

    print (“Llongyfarchiadau, rydych chi wedi derbyn benthyciad”)

arall:

    print (“Mae’n ddrwg gennym, nid ydych yn gymwys i gael benthyciad”)

Mae'r rhaglen hon yn cynnal gwiriad statws credyd. Os yw'n llai na 70, mae'r rhaglen yn adrodd nad yw'r defnyddiwr yn gymwys i gael credyd. Os yw'n fwy, cynhelir ail wiriad i weld a yw'r terfyn credyd cyfredol yn fwy na 150. Os ydyw, yna dangosir neges bod y benthyciad wedi'i roi.

Os yw'r ddau werth yn ffug, yna dangosir neges nad oes gan y defnyddiwr y posibilrwydd o gael benthyciad. 

Nawr, gadewch i ni ail-weithio'r rhaglen honno ychydig.

gre_score = int(mewnbwn(“Rhowch y terfyn cyfredol: “))

per_grad = int(mewnbwn(“Rhowch sgôr credyd: “))

os fesul_grad> 70:

    os gre_sgor> 150:

        print (“Llongyfarchiadau, rydych chi wedi derbyn benthyciad”)

    arall:

        argraffu (“Mae eich terfyn credyd yn isel”)

arall:

    print (“Mae'n ddrwg gennyf, nid ydych yn gymwys i gael credyd”)

Mae'r cod ei hun yn debyg iawn, ond yn nythu if hefyd yn darparu algorithm rhag ofn y bydd y cyflwr ohono yn troi allan i fod yn ffug. Hynny yw, mae'r terfyn ar y cerdyn yn annigonol, ond mae'r hanes credyd yn dda, mae'r neges "Mae gennych chi statws credyd isel" yn cael ei harddangos.

datganiad os-arall y tu mewn i amod arall

Gadewch i ni wneud rhaglen arall sy'n pennu gradd myfyriwr yn seiliedig ar sgoriau prawf.

sgôr = int(mewnbwn("Rhowch eich sgôr: "))

os sgôr >= 90:

    print ("Gwych! Eich gradd yw A")

arall:

    os sgôr >= 80:

print ("Gwych! Eich gradd yw B")

    arall:

os sgôr >= 70:

    print (“Da! Mae eich gradd yn C”)

arall:

    os sgôr >= 60:

print ("Dy radd yw D. Mae'n werth ailadrodd y deunydd.")

    arall:

print ("Fe fethoch chi'r arholiad")

Mae'r cais yn gyntaf yn gwirio i weld a yw'r sgôr yn fwy na neu'n hafal i 90. Os ydy, yna mae'n dychwelyd gradd A. Os yw'r amod hwn yn anwir, yna cynhelir gwiriadau dilynol. Gwelwn fod yr algorithm bron yr un peth ar yr olwg gyntaf. Felly yn lle gwirio y tu mewn arall Mae'n well defnyddio cyfuniad os-eliff-arall.

Felly y gweithredwr if yn cyflawni swyddogaeth bwysig iawn - mae'n sicrhau bod rhai darnau o god yn cael eu gweithredu dim ond os oes angen hynny. Mae'n amhosibl dychmygu rhaglennu hebddo, oherwydd mae hyd yn oed yr algorithmau symlaf yn gofyn am ffyrc fel "os ewch i'r chwith, fe welwch hi, ac os ewch i'r dde, yna mae angen i chi wneud hyn a'r llall."

Gadael ymateb