06 mar

🐍 Python 3: instrukcje warunkowe if, else, elif

Python 3 - instrukcje if, elseif, elif, else

Instrukcje warunkowe są częścią każdego języka programowania, w tym Python. Za pomocą instrukcji warunkowych możemy tworzyć kod, który czasem się wykonuje, a innym razem nie, w zależności od warunków programu w tym czasie.

W przypadku, gdy zawsze wykonujemy każdą instrukcję programu, przechodząc od góry do dołu (każda linia wykonana jest w kolejności), nie wymagamy od programu wyznaczenia wartości konkretnych warunków. Korzystając z instrukcji warunkowych, programy mogą ustalić, czy spełnione są określone warunki, a następnie dowiedzieć się, co wykonywać dalej.

Spójrzmy na kilka przykładów, w których moglibyśmy skorzystać z instrukcji warunkowych:

  • Jeśli student otrzyma ponad 65% punktów z testu, wtedy zgłoś, że ocena jest pozytywna; w przeciwnym wypadku zgłoś, że ocena jest negatywna
  • Jeśli klient ma pieniądze na swoim koncie, nalicz odsetki; w przeciwnym wypadku nalicz opłatę karną
  • Jeśli klienci kupią 10 lub więcej pomarańczy, oblicz rabat w wysokości 5%; jeśli kupią mniej, wtedy nie obliczaj rabatu

Kod warunkowy piszemy, wyznaczając wartości warunków i wybierając kod do uruchomienia na podstawie tego, czy warunki te są spełnione.

Ten artykuł poprowadzi cię przez tworzenie instrukcji warunkowych w języku Python.

Instrukcja if w Python 3

Zaczniemy od instrukcji if, która oceni, czy instrukcja jest prawdziwa czy fałszywa, i uruchomi kod tylko w przypadku, gdy instrukcja jest prawdziwa.

W dowolnym edytorze tekstowym otwórz plik i stwórz następujący kod:

punkty = 70

if punkty >= 65:
    print("Ocena pozytywna")

Za pomocą tego kodu otrzymujemy zmienną punkty i nadajemy jej wartość 70. Następnie używamy instrukcji if, aby ocenić, czy zmienna punkty jest większa lub równa (>=) 65. Jeśli ten warunek jest spełniony, wtedy instruujemy program, aby wypisał na wyjściu komunikat Ocena pozytywna.

Zapisz program jako ocena.py i uruchom go w lokalnym środowisku programistycznym – w oknie terminala wykonaj polecenie python ocena.py.

W tym przypadku zmienna punkty równa 70 spełnia warunek bycia liczbą większą lub równą 65, więc po uruchomieniu programu otrzymasz następujące dane wyjściowe:

Ocena pozytywna

Zmieńmy teraz rezultat wykonania tego programu, zmieniając wartość zmiennej punkty na 60:

punkty = 60

if punkty >= 65:
    print("Ocena pozytywna")

Po zapisaniu i uruchomieniu tego kodu nie otrzymamy na wyjściu żadnego komunikatu, ponieważ warunek nie został spełniony i nie poinstruowaliśmy programu, aby wykonał inną instrukcję.

Sprawdź nasz hosting już od 4.17 zł/mies. lub TurboVPS oparty o procesory z częstotliwością do 5 GHz z darmowym premium wsparciem 24/7 od naszych administratorów! Z kodem RABATNABLOG dostaniesz dodatkowy rabat 15% przy pierwszej płatności.

Aby podać jeszcze jeden przykład, obliczmy, czy saldo konta bankowego jest niższe niż 0. Stwórzmy plik o nazwie account.py i zdefiniujmy następujący kod:

saldo = -5

if saldo < 0:
    print("Saldo poniżej 0, doladuj konto.")

Gdy uruchomimy program komendą python account.py, otrzymamy następujący rezultat:

Saldo poniżej 0, doladuj konto.

W programie zainicjalizowaliśmy zmienną saldo wartością -5, która jest mniejsza niż 0. Ponieważ saldo spełniało warunek instrukcji if (saldo < 0), to po zapisaniu i uruchomieniu kodu otrzymamy komunikat. Ponownie, jeśli zmienimy saldo na 0 lub liczbę dodatnią, nie otrzymamy żadnego rezultatu.

Instrukcja else w Python 3 

Jest bardzo prawdopodobne, że będziemy chcieli, aby program podjął określone działania nawet w przypadku, gdy instrukcja if ma wartość false. W naszym przykładzie będziemy chcieli uzyskać wynik niezależnie od tego, czy ocena jest pozytywna, czy negatywna.

Aby to zrobić, do powyższego warunku dodamy instrukcję else, która zbudowana jest w następujący sposób:

punkty = 60

if punkty >= 65:
    print("Ocena pozytywna")

else:
    print("Ocena negatywna")

Ponieważ powyższa zmienna punkty ma wartość 60, instrukcja if jest oceniana jako fałsz, więc program nie wypisze komunikatu o ocenie pozytywnej. Poniższa instrukcja else tak czy siak poleci programowi coś zrobić.

Po zapisaniu i uruchomieniu programu, otrzymamy następujący rezultat:

Ocena negatywna

Jeśli następnie przepiszemy program tak, aby zmiennej punkty nadać wartość 65 lub wyższą, zamiast tego otrzymamy na wyjściu komunikat Ocena pozytywna.

Aby dodać instrukcję else do przykładu konta bankowego, zmodyfikujmy kod w następujący sposób:

saldo = 522

if saldo < 0:
    print("Saldo poniżej 0, doladuj konto..")

else:
    print("Your balance is 0 or above.")
Your balance is 0 or above.

W tym przypadku zmieniliśmy wartość zmiennej saldo na liczbę dodatnią, aby otrzymać komunikat zdefiniowany dla instrukcji else. Aby otrzymać komunikat z instrukcji if, możemy zmienić wartość na liczbę ujemną.

Łącząc instrukcję if z instrukcją else, tworzymy dwuczęściową instrukcję warunkową, która powie komputerowi, aby wykonał określony kod niezależnie od tego, czy spełniony jest warunek if.

Instrukcja else if w Python 3

Jak do tej pory przedstawiliśmy opcję logiczną dla instrukcji warunkowych, przy czym każda instrukcja if ma wartość true lub false. W wielu przypadkach będziemy potrzebować programu, który ocenia więcej niż dwa możliwe wyniki. W tym celu użyjemy instrukcji else if, która jest napisana w Pythonie jako elif. Instrukcja elif lub if wygląda jak instrukcja if i ocenia inny warunek.

W przykładzie dotyczącym konta bankowego moglibyśmy potrzebować trzech oddzielnych komunikatów dla trzech różnych sytuacji:

  • saldo jest mniejsze od zera
  • saldo jest równe zeru
  • saldo jest większe od zera

Instrukcja elif zostanie umieszczona między instrukcją if a instrukcją else w następujący sposób:

. . .
if saldo < 0:
    print("Saldo poniżej 0, doladuj konto.")

elif saldo == 0:
    print("Saldo rowne 0, dodaj srodki.")

else:
    print("Saldo wynosi 0 lub wiecej.")

Teraz istnieją trzy możliwe rezultaty, które mogą wystąpić po uruchomieniu programu:

  • Jeśli zmienna saldo jest równa 0, otrzymamy wynik z instrukcji elif (Saldo jest równe 0, dodaj środki).
  • Jeśli zmienna saldo jest liczbą dodatnią, otrzymamy wynik z instrukcji else (Twoje saldo wynosi 0 lub więcej).
  • Jeśli zmienna saldo jest liczbą ujemną, wyjściem będzie ciąg znaków z instrukcji if (Saldo jest ujemne, dodaj środki teraz lub zostaniesz obciążony karą).

Co jeśli chcemy mieć więcej niż trzy możliwości? Możemy to zrobić, wprowadzając do naszego kodu więcej niż jedną instrukcję elif.

W programie ocena.py zmodyfikujmy kod tak, aby odpowiednim zakresom liczby punktów przypisać ocenę numeryczną:

  • 90 punktów lub więcej odpowiada ocenie 5
  • 80-89 punktów odpowiada ocenie 4
  • 70-79 punktów odpowiada ocenie 3
  • 65-69 punktów odpowiada ocenie 2
  • 64 punktów lub mniej odpowiada ocenie 1

Aby uruchomić ten kod, potrzebujemy jednej instrukcji if, trzech instrukcji elif i instrukcji else, która obsłuży wszystkie nieudane przypadki.

Przepiszmy kod z powyższego przykładu, aby otrzymywać komunikaty, które wypisują każdą z ocen. Możemy zachować naszą instrukcję else bez zmian.

. . .
if punkty >= 90:
    print("ocena 5")

elif punkty >=80:
    print("ocena 4")

elif punkty >=70:
    print("ocena 3")

elif punkty >= 65:
    print("ocena 2")

else:
    print("ocena 1")

Ponieważ instrukcje elif będą wyznaczać wartość według kolejności, możemy utrzymać nasze instrukcje w dość prostej formie. Ten program wykonuje następujące kroki:

  1. Jeśli liczba punktów jest większa od 90, wtedy program wyświetli ocenę 5, jeśli liczba punktów jest mniejsza od 90, wtedy program przejdzie do następnej instrukcji…
  2. Jeśli liczba punktów jest większa lub równa 80, wtedy program wyświetli ocenę 4, jeśli liczba punktów jest równa 79 lub mniejsza, wtedy program przejdzie do następnej instrukcji…
  3. Jeśli liczba punktów jest większa lub równa 70, wtedy program wyświetli ocenę 3, jeśli liczba punktów jest równa 69 lub mniejsza, wtedy program przejdzie do następnej instrukcji…
  4. Jeśli liczba punktów jest większa lub równa 65, wtedy program wyświetli ocenę 2, jeśli liczba punktów jest równa 64 lub mniejsza, wtedy program przejdzie do następnej instrukcji…
  5. Program wyświetli komunikat o ocenie negatywnej, ponieważ żaden z powyższych warunków nie został spełniony.

Zagnieżdżone instrukcje if

Gdy już oswoisz się ze stosowaniem instrukcji if, elif i else, możesz przejść do zagnieżdżonych instrukcji warunkowych. Możemy skorzystać z zagnieżdżonych instrukcji if w sytuacjach, w których chcemy sprawdzić warunek wtórny, jeśli pierwszy warunek zostanie wykonany jako prawdziwy. W tym celu możemy umieścić instrukcję if-else w innej instrukcji if-else. Spójrzmy na składnię zagnieżdżonej instrukcji if:

if warunek1:              #"zewnetrzna" instrukcja if
    print("true")

    if zagniezdzony_warunek:    #wewnetrzna instrukcja if
        print("yes")

    else:                   #wewnetrzna instrukcja else
        print("no")

else:                       #zewnetrzna instrukcja else
    print("false")

Z wykonania powyższego kodu możemy otrzymać kilka możliwych komunikatów:

  • Jeśli warunek1 będzie prawdziwe, wtedy program sprawdzi, czy zagniezdzony_warunek również jest prawdziwe. Jeśli oba przypadki będą prawdziwe, wtedy dane wyjściowe będą następujące:
    true
    yes
  • Jeśli jednak warunek1 będzie prawdziwe, a zagniezdzony_warunek fałszywe, wtedy otrzymamy poniższe dane wyjściowe:
    true
    no
  • A jeśli warunek1 będzie fałszywe, wtedy instrukcja zagnieżdżona if-else nie zostanie uruchomiona, więc instrukcja else uruchomiona zostanie osobno, a rezultat będzie następujący:
    false

Możemy również mieć wiele instrukcji if zagnieżdżonych w całym naszym kodzie:

if warunek1:                  #zewnetrzny if
    print("hello world")

    if zagniezdzony_warunek1:       #pierwszy wenetrzny if
        print("yes")

    elif zagniezdzony_warunek2:     #pierwszy wewnetrzny elif
        print("maybe")

    else:                       #pierwszy wewnetrzny else
        print("no")

elif warunek2:                #zewnetrzny elif
    print("hello galaxy")

    if zagniezdzony_warunek3:       #drugi wewnetrzny if
        print("yes")

    elif zagniezdzony_warunek4:     #drugi wewnetrzny elif
        print("maybe")

    else:                       #drugi wewnetrzny else
        print("no")

else:                           #zewnetrzny else
    warunek("czesc studia")

W powyższym kodzie oprócz instrukcji elif znajduje się zagnieżdżona instrukcja if. Pozwoli to na większą liczbę opcji w ramach każdego warunku.

Spójrzmy na przykład zagnieżdżonych instrukcji if w naszym programie ocena.py. Możemy najpierw sprawdzić, czy ocena jest pozytywna (większa lub równa 65 punktów), a następnie sprawdzić, która ocena powinna być równoważna z liczbą punktów. Jeśli liczba punktów nie przejdzie, nie musimy przeglądać ocen, a zamiast tego możemy wyświetlić w programie komunikat o ocenie negatywnej. Nasz zmodyfikowany kod z zagnieżdżoną instrukcją if będzie wyglądał następująco:

. . .
if punkty >= 65:
    print("Ocena dostateczna:")

    if punkty >= 90:
        print("5")

    elif punkty >=80:
        print("4")

    elif punkty >=70:
        print("3")

    elif punkty >= 65:
        print("2")

else:
    print("Ocena negatywna")

Jeśli uruchomimy kod ze zmienną punkty ustawioną na liczbę całkowitą 92, pierwszy warunek zostanie spełniony, a program wydrukuje komunikat Ocena dostateczna:. Następnie sprawdzi, czy ocena jest wyższa lub równa 90, a ponieważ warunek ten jest również spełniony, wydrukuje 5.

Jeśli uruchomimy kod ze zmienną punkty ustawioną na 60, wówczas pierwszy warunek nie zostanie spełniony, więc program pominie instrukcje zagnieżdżone if i przejdzie do instrukcji else, a program wypisze komunikat Ocena negatywna.

Sprawdź nasz hosting już od 4.17 zł/mies. lub TurboVPS oparty o procesory z częstotliwością do 5 GHz z darmowym premium wsparciem 24/7 od naszych administratorów! Z kodem RABATNABLOG dostaniesz dodatkowy rabat 15% przy pierwszej płatności.

Możemy oczywiście dodać jeszcze więcej opcji i użyć drugiej warstwy zagnieżdżonych instrukcji if. Być może będziemy chcieli potraktować osobno oceny 5 -, 5 i 5 +. Możemy to zrobić, najpierw sprawdzając, czy ocena jest pozytywna, a następnie sprawdzając, czy ocena wynosi 90 lub więcej, a następnie sprawdzając, czy ocena jest wyższa niż 96, na przykład dla 5 +:

. . .
if punkty >= 65:
    print("Ocena dostateczna:")

    if punkty >= 90:
        if punkty > 96:
            print("5+")

        elif punkty > 93 and punkty <= 96:
            print("5")

        elif punkty >= 90:
            print("5-")
. . .

W powyższym kodzie, dla zmiennej punkty ustawionej na 96, program uruchomi się następująco:

  1. Sprawdź, czy liczba punktów jest większa lub równa 65 (true)
  2. Wypisz komunikat Ocena dostateczna:
  3. Sprawdź, czy liczba punktów jest większa lub równa 90 (true)
  4. Sprawdź, czy liczba punktów jest większa niż 96 (false)
  5. Sprawdź, czy liczba punktów jest większa niż 93 oraz mniejsza lub równa 96 (true)
  6. Wypisz 5
  7. Pozostaw te zagnieżdżone instrukcje warunkowe i kontynuuj wykonywanie pozostałego kodu

Wynik programu dla liczby punktów 96 wygląda zatem następująco:

Ocena dostateczna:
5

Zagnieżdżone instrukcje if umożliwiają dodanie do kodu kilku określonych poziomów warunków.

Podsumowanie

Używając instrukcji warunkowych – takich jak if – będziesz mieć większą kontrolę nad tym, co program wykonuje. Instrukcje warunkowe nakazują programowi sprawdzić, czy spełniony jest określony warunek. Jeśli warunek jest spełniony, wykona się wtedy określony kod, ale jeśli nie zostanie spełniony, program będzie kontynuował przejście do innego fragmentu kodu.

Zainstalować aplikację na Python można bez problemu na hostingu współdzielonym w Hostovita, instrukcja znajduje się na stronie Uruchomienie Python, Django w cPanel