Baldintzazko if adierazpena Python-en. Sintaxia, else/elif blokeak, adibideak

Programatzen ikasteko prozesuan, bizitza errealean aplikatzeko hain errazak ez diren programak sortu behar izaten dira askotan. Azken finean, noizean behin argibideak baldintza jakin batzuetan bakarrik jarraitu behar dituzu. Hau programan inplementatu ahal izateko, hizkuntza guztiek kontrol adierazpenak dituzte. Haien laguntzarekin, kodearen exekuzioaren fluxua kontrola dezakezu, begiztak sortuz edo ekintza batzuk eginez baldintza jakin bat egia denean soilik.

Gaur if adierazpenari buruz hitz egingo dugu, egoera jakin baterako egungo egoera egiaztatzen duena, eta informazio horretan oinarrituta, ekintza gehiagori buruzko erabakiak hartzen dituena.

Kontrol-adierazpen motak

Oro har, if ez da programa baten fluxua kontrolatzen duen adierazpen bakarra. Baita bera operadore-kate handiago baten osagai izan daiteke.

Bere exekuzio prozesua kontrolatzen duten begiztak eta adierazpenak ere badaude. Gaur, baldintzapeko operadoreaz eta hark parte har dezakeen kateez bakarrik hitz egingo dugu.

Programazioan, adarkatze bat dago. Hain zuzen ere, baldintza jakin bat egia bada bakarrik exekutatzen den agindu-segida bat esan nahi du. Irizpideak berez desberdinak izan daitezke:

  1. Aldagai baten berdintasuna balio jakin batekin.
  2. Ekintza zehatz bat egitea.
  3. Aplikazioaren egoera (kolapsoa edo ez).

Espektroa askoz handiagoa izan daiteke. Baldintzazko adierazpenak hainbat motatakoak dira:

  1. Adar batekin. Hau da, egiaztapen bakarra egiten da, eta horren ondorioz ekintza batzuk egiten dira.
  2. Bi adar edo gehiagorekin. 1. irizpidea egia bada, egiaztatu 2. irizpidea. Egia bada, egiaztatu 3. Eta, beraz, egin behar adina egiaztapen.
  3. Hainbat baldintzarekin. Hemen dena sinplea da. Interpretatzaileak baldintza anitz edo horietako bat egiaztatzen du.

bada adierazpena

If adierazpenaren egitura antzekoa da hizkuntza guztietan. Hala ere, Python-en, bere sintaxia beste guztien aldean zertxobait desberdina da:

baldintza bada:

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

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

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

Lehenik eta behin, operadorea bera deklaratzen da, eta ondoren funtzionatzen hasteko baldintza idazten da. Baldintza egia ala faltsua izan daiteke.

Ondoren, komandoak dituen bloke bat dator. Berehala bete beharreko irizpide bati jarraitzen badio, orduan dagokion agindu-segidari if bloke deitzen zaio. Bertan edozein komando erabil ditzakezu.

Arreta! If bloke-komando guztien barruko koskak tamaina berekoa izan behar du. Blokeen mugak koskak zehazten dituzte. 

Hizkuntza dokumentazioaren arabera, koska 4 espaziokoa da. 

Nola funtzionatzen du operadore honek? Interpretatzaileak if hitza ikusten duenean, berehala egiaztatzen du adierazpena erabiltzaileak zehaztutako irizpideekin. Hori horrela bada, argibideak bilatzen eta haiek jarraitzen hasten da. Bestela, bloke honetako komando guztiak saltatzen dira.

Baldintzaren ondorengo adierazpen bat koskarik ez badago, ez da if bloke gisa tratatuko. Gure egoeran, lerro hau da . Beraz, egiaztapenaren emaitza edozein dela ere, lerro hau exekutatu egingo da.

Hona hemen kode zati bat operadore honek nola funtzionatzen duen jakiteko.

zenbakia = int(sarrera ("Idatzi zenbaki bat: "))

zenbakia > 10 bada:

    inprimatu ("Zenbakia 10 baino handiagoa da")

Programa honek erabiltzaileari zenbaki bat eskatzen dio eta 10 baino handiagoa den egiaztatzen du. Hala bada, informazio egokia itzultzen du. Adibidez, erabiltzaileak 5 zenbakia sartzen badu, programa amaitu besterik ez da egingo, eta kitto.

Baina 100 zenbakia zehazten baduzu, interpreteak hamar baino gehiago dela ulertuko du eta jakinaraziko du.

Arreta! Gure kasuan, baldintza faltsua bada, programa gelditzen da, instrukzioaren ondoren ez baita komandorik ematen.

Goiko kodean komando bakarra dago. Baina askoz gehiago daude. Baldintza bakarra koska egitea da.

Orain azter dezagun komandoen sekuentzia hau.

zenbakia = int(sarrera ("Idatzi zenbaki bat: "))

zenbakia > 10 bada:

    inprimatu ("lehen lerroa")

    inprimatu ("bigarren lerroa")

    inprimatu ("hirugarren lerroa")

print ("Exekutatzen den lerroa, sartutako zenbakia edozein dela ere")

inprimatu ("Aplikazioa amaitu")

Saiatu asmatzen zein izango den irteera 2, 5, 10, 15, 50 balioak sartzen badituzu.

Ikus dezakezun bezala, erabiltzaileak sartutako zenbakia hamar baino gehiago bada, hiru lerro ateratzen dira + bat "Exekutatu aldi bakoitzean..." testuarekin eta beste bat "Amaitu", eta hamar baino gutxiago bada, bakarrarekin. beste testu bat. 3,4,5 lerroak bakarrik exekutatuko dira egia bada. Hala ere, azken bi lerroak idatziko dira edozein dela ere erabiltzaileak zehazten duen zenbakia.

Adierazpenak zuzenean kontsolan erabiltzen badituzu, emaitza ezberdina izango da. Interpreteak berehala pizten du linea anitzeko modua baldin, egiaztapen-irizpidea zehaztu ondoren, Sartu sakatu.

Demagun hurrengo agindu-segida idatzi dugula.

>>>

>>> n = 100

>>> n > 10 bada:

...

Horren ostean, ikusiko dugu >>> elipsiak ordeztu duela. Horrek esan nahi du linea anitzeko sarrera modua gaituta dagoela. Hitz errazetan, Sartu sakatzen baduzu, instrukzioaren bigarren faseko sarrerara pasatuko zara. 

Eta bloke honetatik irteteko, eraikuntza bat gehiago gehitu behar diozu blokeari if.

>>>

>>> n = 100

>>> n > 10 bada:

… inprimatu(«nv 10»)

...

Baldintza egia ez bada, programa amaitzen da. Arazo bat da, erabiltzaileak programa hori hutsegite baten ondorioz itxi dela hauteman dezakeelako. Horregatik, beharrezkoa da erabiltzaileari iritzia ematea. Horretarako, esteka bat erabiltzen da bestela.

adierazpen operadorea bestela

Eragile honek esteka bat ezartzeko aukera ematen du: esapideak arau jakin batekin bat egiten badu, egin ekintza hauek, eta ez bada, beste batzuk. Hau da, programaren emaria bi bidetan banatzeko aukera ematen du. Sintaxia intuitiboa da:

baldintza bada:

    # blokeatu bada

    adierazpena 1

    adierazpena 2

    eta abar

bestela:

    # bestela blokeatu

    adierazpena 3

    adierazpena 4

    eta abar:

Azal dezagun operadore honek nola funtzionatzen duen. Lehenik eta behin, adierazpen estandarra harian exekutatzen da hagina, bat datorren ala ez egiaztatzea baldintza “egia” edo “gezurra”. Ekintza gehiago egiaztapenaren emaitzen araberakoak dira. Egia bada, baldintzaren ondorengo jarraibideen sekuentzian dagoen instrukzioa zuzenean exekutatzen da. hagina, faltsua bada, orduan bestela

Horrela akatsak kudeatu ditzakezu. Adibidez, erabiltzaileak erradio bat sartu behar du. Jakina, gehi zeinua duen zenbaki bat izan daiteke soilik, edo balio nulua da. 0 baino txikiagoa bada, zenbaki positibo bat sartzeko eskatuz mezu bat bidali behar duzu. 

Hona hemen zeregin hau inplementatzen duen kodea. Baina akats bat dago hemen. Saiatu zein den asmatzen. 

erradioa = int(sarrera ("Idatzi erradioa: "))

erradioa >= 0 bada:

    inprimatu ("Zirkunferentzia = ", 2 * 3.14 * erradioa)

    inprimatu ("Area = ", 3.14 * erradioa ** 2)

    bestela:

        print("Mesedez, sartu zenbaki positibo bat")

Koska bat ez datoz errorea. Bestela bada horiek gabe edo kopuru berdinarekin kokatu behar da (habiatuta dauden ala ez).

Eman dezagun beste erabilera kasu bat (non dena zuzena izango den operadorearen lerrokatzearekin) - pasahitza egiaztatzen duen aplikazio-elementua.

pasahitza = input ("Sartu pasahitza: ")

pasahitza == «sshh» bada:

    inprimatu ("Ongi etorri")

bestela:

    print ("Sarbidea ukatua")

Instrukzio honek pertsona gehiago saltatzen du pasahitza sshh bada. Letren eta zenbakien beste konbinazioren bat izanez gero, "Sarbidea ukatua" mezua bistaratzen du.

adierazpen-adierazpena bada-elif-bestela

Hainbat baldintza egia ez badira bakarrik, blokean dagoen adierazpena exekutatzen da. bestela. Adierazpen honek honela funtzionatzen du.

baldintza_1 bada:

    # blokeatu bada

    Komunikatua

    Komunikatua

    adierazpen gehiago

elif baldintza_2:

    # lehen elif blokea

    Komunikatua

    Komunikatua

    adierazpen gehiago

elif baldintza_3:

    # bigarren elif blokea

    Komunikatua

    Komunikatua

    adierazpen gehiago

...

bestela

    Komunikatua

    Komunikatua

    adierazpen gehiago

Baldintza gehigarri kopuru bat zehaztu dezakezu.

Enuntziatuak habiaratuak

Baldintza anitz ezartzeko beste modu bat baldintza-kontrol gehigarriak if blokean txertatzea da.

Operator if beste baldintza bloke baten barruan

gre_score = int(sarrera ("Idatzi zure egungo kreditu-muga"))

per_grad = int(sarrera ("Idatzi zure kreditu-kalifikazioa: "))

gradu bakoitzeko > 70 bada:

    # kanpoko blokea bada

        gre_score > 150 bada:

            # barruko blokea bada

    print("Zorionak, mailegu bat jaso duzu")

bestela:

    inprimatu ("Barkatu, ez zara mailegurako eskubidea")

Programa honek kreditu-kalifikazioaren egiaztapena egiten du. 70 baino txikiagoa bada, programak jakinaraziko du erabiltzailea ez dela krediturik jasotzeko eskubidea. Handiagoa bada, bigarren egiaztapen bat egiten da egungo kreditu-muga 150 baino handiagoa den ikusteko. Baiezkoa bada, maileguak eman direla dioen mezu bat bistaratuko da.

Bi balioak faltsuak badira, erabiltzaileak mailegu bat lortzeko aukerarik ez duela adierazten duen mezua bistaratzen da. 

Orain berriro lan ditzagun programa hori pixka bat.

gre_score = int(sarrera ("Idatzi uneko muga: "))

per_grad = int(sarrera ("Idatzi kreditu puntuazioa: "))

gradu bakoitzeko > 70 bada:

    gre_score > 150 bada:

        print("Zorionak, mailegu bat jaso duzu")

    bestela:

        print("Zure kreditu-muga baxua da")

bestela:

    print("Barkatu, ez zara kreditua jasotzeko eskubidea")

Kodea bera oso antzekoa da, baina habiaratua if halaber, algoritmo bat eskaintzen du bertatik datorren baldintza faltsua den kasuetan. Hau da, txartelaren muga ez da nahikoa, baina kreditu-historia ona da, "Kreditu-kalifikazio baxua duzu" mezua agertzen da.

baldin-bestela adierazpena baldintza baten barruan bestela

Egin dezagun beste programa bat ikasle baten kalifikazioa zehazten duena proben puntuazioetan oinarrituta.

puntuazioa = int(sarrera ("Idatzi zure puntuazioa: "))

puntuazioa >= 90 bada:

    inprimatu ("Oso! Zure kalifikazioa A da")

bestela:

    puntuazioa >= 80 bada:

inprimatu ("Oso! Zure kalifikazioa B da")

    bestela:

puntuazioa >= 70 bada:

    inprimatu ("Ongi! Zure kalifikazioa C da")

bestela:

    puntuazioa >= 60 bada:

inprimatu ("Zure kalifikazioa D da. Merezi du materiala errepikatzea.")

    bestela:

print ("Azterketa huts egin duzu")

Aplikazioak lehenik puntuazioa 90 baino handiagoa edo berdina den egiaztatzen du. Baiezkoa bada, A kalifikazioa ematen du. Baldintza hori faltsua bada, ondorengo egiaztapenak egiten dira. Lehen begiratuan algoritmoa ia berdina dela ikusten dugu. Beraz, barruan egiaztatu beharrean bestela hobe da konbinazio bat erabiltzea bada-elif-bestela.

Beraz, operadorea if oso funtzio garrantzitsua betetzen du: kode batzuk behar izanez gero soilik exekutatzen direla ziurtatzen du. Ezinezkoa da hura gabe programatzea imajinatzea, algoritmo sinpleenek ere sardexkak behar dituztelako "ezkerrera joaten bazara, aurkituko duzu, eta eskuinera joaten bazara, hau eta bestea egin behar duzu".

Utzi erantzun bat