Feltételes if utasítás Pythonban. Szintaxis, else/elif blokkok, példák

A programozás elsajátítása során gyakran olyan programokat kell készíteni, amelyeket a való életben nem olyan egyszerű alkalmazni. Végtére is, időnként csak bizonyos feltételek mellett kell követnie az utasításokat. Ahhoz, hogy ezt a programban megvalósíthassuk, minden nyelv rendelkezik vezérlő utasításokkal. Segítségükkel szabályozható a kódvégrehajtás folyamata, hurkok létrehozása vagy bizonyos műveletek végrehajtása csak akkor, ha egy bizonyos feltétel igaz.

Ma az if utasításról lesz szó, amely egy adott állapotra ellenőrzi az aktuális helyzetet, és ezen információk alapján hoz döntéseket a további intézkedésekről.

Az ellenőrzési nyilatkozatok típusai

Általánosságban elmondható, hogy az if nem az egyetlen utasítás, amely vezérli a program folyamatát. Valamint ő maga is részese lehet egy nagyobb operátorláncnak.

Vannak ciklusok és utasítások is, amelyek a végrehajtás folyamatát szabályozzák. Ma csak a feltételes operátorról és azokról a láncokról lesz szó, amelyekben részt vehet.

A programozásban van olyan, hogy elágazás. Pontosan ez jelenti azt a parancssorozatot, amely csak akkor fut le, ha egy bizonyos feltétel igaz. Maguk a kritériumok eltérőek lehetnek:

  1. Változó egyenlősége egy bizonyos értékkel.
  2. Egy adott művelet végrehajtása.
  3. Alkalmazás állapota (összecsukott vagy nem).

A spektrum sokkal nagyobb lehet. A feltételes kijelentéseknek többféle típusa van:

  1. Egy ággal. Vagyis egyetlen ellenőrzést hajtanak végre, amelynek eredményeként bizonyos műveleteket hajtanak végre.
  2. Két vagy több ággal. Ha az 1. feltétel igaz, akkor ellenőrizze a 2. feltételt. Ha igaz, akkor ellenőrizze a 3. feltételt. Így végezzen annyi ellenőrzést, amennyi szükséges.
  3. Több feltétellel. Itt minden egyszerű. A tolmács több feltételt vagy egyiket ellenőrzi.

ha nyilatkozat

Az if utasítás szerkezete minden nyelven hasonló. A Pythonban azonban a szintaxisa némileg eltér az összes többitől:

ha feltétel:

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

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

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

Először magát az operátort deklarálják, majd kiírják azt a feltételt, amely mellett működésbe lép. A feltétel igaz vagy hamis lehet.

Ezt követi egy blokk parancsokkal. Ha közvetlenül követ egy teljesítendő feltételt, akkor a megfelelő parancssort if blokknak nevezzük. Bármennyi parancsot használhatsz benne.

Figyelem! Az all if blokkparancsokon belüli behúzásnak azonos méretűnek kell lennie. A blokkhatárokat a behúzások határozzák meg. 

A nyelvi dokumentáció szerint a behúzás 4 szóköz. 

Hogyan működik ez az operátor? Amikor az értelmező látja az if szót, azonnal ellenőrzi a kifejezést a felhasználó által megadott feltételeknek megfelelően. Ha ez a helyzet, akkor elkezdi keresni az utasításokat és követni azokat. Ellenkező esetben az ebből a blokkból származó összes parancs kimarad.

Ha a feltétel utáni utasítás nincs behúzva, akkor a rendszer nem kezeli if blokkként. A mi helyzetünkben ez a vonal az . Ezért az ellenőrzés eredményétől függetlenül ez a sor végrehajtásra kerül.

Íme egy kódrészlet az operátor működésére.

szám = int(input("Írjon be egy számot: "))

ha a szám > 10:

    print ("A szám nagyobb, mint 10")

Ez a program egy szám megadását kéri a felhasználótól, és ellenőrzi, hogy az nagyobb-e 10-nél. Ha igen, akkor a megfelelő információt adja vissza. Például, ha a felhasználó beírja az 5-ös számot, akkor a program egyszerűen véget ér, és ennyi.

De ha megadja a 100-as számot, akkor a tolmács megérti, hogy több mint tíz, és jelenteni fogja.

Figyelem! Esetünkben ha a feltétel hamis, a program leáll, mert az utasítás után nem adnak ki parancsot.

A fenti kódban csak egy parancs található. De sokkal több van belőlük. Az egyetlen követelmény a behúzás.

Most elemezzük ezt a parancssort.

szám = int(input("Írjon egy számot: "))

ha a szám > 10:

    nyomtatás ("első sor")

    nyomtatás ("második sor")

    nyomtatás ("harmadik sor")

print ("A végrehajtott sor, függetlenül a beírt számtól"

nyomtatás („Alkalmazás befejezése”)

Próbálja meg kitalálni, mi lesz a kimenet, ha beírja a 2, 5, 10, 15, 50 értékeket.

Mint látható, ha a felhasználó által beírt szám több mint tíz, akkor három sor jelenik meg + egy „Futtatás minden alkalommal…” szöveggel és egy „Vége”, és ha kevesebb tíznél, akkor csak egy, más szöveg. Csak a 3,4,5., XNUMX., XNUMX. sor kerül végrehajtásra, ha igaz. Az utolsó két sort azonban a rendszer a felhasználó által megadott számtól függetlenül kiírja.

Ha az utasításokat közvetlenül a konzolban használja, az eredmény más lesz. A tolmács azonnal bekapcsolja a többsoros módot, ha az ellenőrzési feltétel megadása után megnyomja az Enter billentyűt.

Tegyük fel, hogy felírtuk a következő parancssort.

>>>

>>> n = 100

>>> ha n > 10:

...

Ezek után látni fogjuk, hogy a >>> helyére ellipszis került. Ez azt jelenti, hogy a többsoros beviteli mód engedélyezve van. Egyszerűen fogalmazva, ha megnyomja az Enter billentyűt, átkerül az utasítás második szakaszának bemenetére. 

És ahhoz, hogy kilépjen ebből a blokkból, még egy konstrukciót kell hozzáadnia a blokkhoz if.

>>>

>>> n = 100

>>> ha n > 10:

… nyomtatás («nv 10»)

...

Ha a feltétel nem igaz, a program leáll. Ez probléma, mivel a felhasználó úgy érzékelheti, hogy egy ilyen program hiba miatt bezárult. Ezért szükséges visszajelzést adni a felhasználónak. Ehhez egy linket használnak ha más.

kifejezés operátor ha más

Ez az operátor lehetővé teszi egy hivatkozás megvalósítását: ha a kifejezés megfelel egy bizonyos szabálynak, hajtsa végre ezeket a műveleteket, és ha nem, akkor másokat. Vagyis lehetővé teszi, hogy a program menetét két útra ossza fel. A szintaxis intuitív:

ha feltétel:

    # ha blokk

    állítás 1

    állítás 2

    és így tovább

más:

    # másik blokk

    állítás 3

    állítás 4

    stb:

Magyarázzuk el, hogyan működik ez az operátor. Először a szabványos utasítás kerül végrehajtásra a szálban tiszafa, ellenőrzi, hogy egyezik-e feltétel "igaz vagy hamis". A további teendők az ellenőrzés eredményétől függenek. Ha igaz, akkor a feltételt követő utasítássorozatban lévő utasítás közvetlenül végrehajtódik. tiszafa, ha hamis, akkor más

Így kezelheti a hibákat. Például a felhasználónak meg kell adnia egy sugarat. Nyilvánvalóan csak pluszjeles szám lehet, vagy nullérték. Ha kisebb, mint 0, akkor üzenetet kell küldenie, amelyben pozitív szám megadását kéri. 

Itt van a kód, amely végrehajtja ezt a feladatot. De van itt egy hiba. Próbáld kitalálni, melyik. 

sugár = int(input(“Adja meg a sugarat: “))

ha sugár >= 0:

    print("Körméret = ", 2 * 3.14 * sugár)

    print("Terület = ", 3.14 * sugár ** 2)

    más:

        print ("Kérjük, írjon be egy pozitív számot")

Behúzás eltérési hiba. Ha és Más nélkülük vagy ugyanannyival kell elhelyezni (attól függően, hogy be vannak-e ágyazva vagy sem).

Adjunk egy másik használati esetet (ahol minden rendben lesz az operátorigazítással) – egy jelszót ellenőrző alkalmazáselemet.

jelszó = input ("Adja meg a jelszót: ")

ha jelszó == «sshh»:

    nyomtatás ("Üdvözöljük")

más:

    nyomtatás ("Hozzáférés megtagadva")

Ez az utasítás tovább hagyja a személyt, ha a jelszó sshh. Ha bármilyen más betű- és számkombináció, akkor a „Hozzáférés megtagadva” üzenet jelenik meg.

állítás-kifejezés if-elif-else

Csak ha több feltétel nem igaz, akkor a blokkban lévő utasítás kerül végrehajtásra. más. Ez a kifejezés így működik.

ha feltétel_1:

    # ha blokk

    nyilatkozat

    nyilatkozat

    további nyilatkozat

elif condition_2:

    # első elif blokk

    nyilatkozat

    nyilatkozat

    további nyilatkozat

elif condition_3:

    # második elif blokk

    nyilatkozat

    nyilatkozat

    további nyilatkozat

...

más

    nyilatkozat

    nyilatkozat

    további nyilatkozat

Bármennyi további feltételt megadhat.

Beágyazott nyilatkozatok

A több feltétel megvalósításának másik módja további feltétel-ellenőrzések beillesztése az if blokkba.

Operátor if egy másik feltételblokkon belül

gre_score = int(input("Adja meg jelenlegi hitelkeretét")

per_grad = int(input("Adja meg hitelminősítését: "))

ha per_grad > 70:

    # külső ha blokk

        ha gre_score > 150:

            # belső if blokk

    print ("Gratulálunk, kölcsönt kapott")

más:

    print („Sajnos nem jogosult kölcsönre”)

Ez a program hitelminősítő ellenőrzést végez. Ha kevesebb, mint 70, a program azt jelenti, hogy a felhasználó nem jogosult jóváírásra. Ha nagyobb, akkor egy második ellenőrzést hajtanak végre, hogy megnézzék, hogy az aktuális hitelkeret nagyobb-e 150-nél. Ha igen, akkor megjelenik egy üzenet, hogy a kölcsönt kiadták.

Ha mindkét érték hamis, akkor egy üzenet jelenik meg, amely szerint a felhasználónak nincs lehetősége kölcsön felvételére. 

Most dolgozzuk át egy kicsit a programot.

gre_score = int(input("Adja meg az áramkorlátot: "))

per_grad = int(input("Adja meg a hitelpontszámot: "))

ha per_grad > 70:

    ha gre_score > 150:

        print ("Gratulálunk, kölcsönt kapott")

    más:

        print ("A hitelkerete alacsony")

más:

    print ("Sajnos nem jogosult jóváírásra")

Maga a kód nagyon hasonló, de beágyazott if algoritmust is ad arra az esetre, ha az abból származó feltétel hamisnak bizonyulna. Vagyis a kártya limitje nem elegendő, de a hiteltörténet jó, megjelenik az „Ön alacsony hitelminősítése” üzenet.

feltételen belüli if-else utasítás más

Készítsünk egy másik programot, amely a teszteredmények alapján meghatározza a tanuló osztályzatát.

pontszám = int(input("Adja meg pontszámát: "))

ha pontszám >= 90:

    print ("Remek! Az osztályzatod A")

más:

    ha pontszám >= 80:

print ("Remek! Az osztályzatod B")

    más:

ha pontszám >= 70:

    print ("Jó! Az osztályzatod C")

más:

    ha pontszám >= 60:

print ("Az osztályzatod D. Érdemes megismételni az anyagot.")

    más:

print ("Elbukott a vizsgán")

Az alkalmazás először ellenőrzi, hogy a pontszám nagyobb-e vagy egyenlő-e 90-nel. Ha igen, akkor A osztályzatot ad vissza. Ha ez a feltétel hamis, akkor utólagos ellenőrzéseket kell végezni. Látjuk, hogy az algoritmus első pillantásra szinte ugyanaz. Tehát ahelyett, hogy benéznénk más jobb kombinációt használni ha-elif-más.

Tehát az operátor if nagyon fontos funkciót lát el – gondoskodik arról, hogy bizonyos kódrészletek csak akkor kerüljenek végrehajtásra, ha szükség van rá. Anélkül elképzelhetetlen a programozás, mert a legegyszerűbb algoritmusokhoz is szükség van olyan villákra, mint „ha balra mész, akkor megtalálod, ha pedig jobbra, akkor ezt-azt kell csinálni”.

Hagy egy Válaszol