Warunkowa instrukcja if w Pythonie. Składnia, bloki else/elif, przykłady

W procesie nauki programowania często konieczne jest tworzenie programów, które nie są tak łatwe do zastosowania w prawdziwym życiu. Przecież od czasu do czasu trzeba postępować zgodnie z instrukcjami tylko pod pewnymi warunkami. Aby móc to zaimplementować w programie, wszystkie języki mają instrukcje sterujące. Za ich pomocą można kontrolować przebieg wykonywania kodu, tworzyć pętle lub wykonywać określone akcje tylko wtedy, gdy spełniony jest określony warunek.

Dzisiaj porozmawiamy o instrukcji if, która sprawdza obecną sytuację pod kątem określonego warunku i na podstawie tych informacji podejmuje decyzje o dalszych działaniach.

Rodzaje oświadczeń kontrolnych

Ogólnie rzecz biorąc, if nie jest jedyną instrukcją, która kontroluje przepływ programu. Tak samo jak on sam może być elementem większego łańcucha operatorów.

Istnieją również pętle i instrukcje sterujące procesem jego wykonania. Dzisiaj porozmawiamy tylko o operatorze warunkowym i łańcuchach, w których może uczestniczyć.

W programowaniu istnieje coś takiego jak rozgałęzienie. To właśnie oznacza sekwencję poleceń, która jest wykonywana tylko wtedy, gdy spełniony jest określony warunek. Same kryteria mogą być różne:

  1. Równość zmiennej do określonej wartości.
  2. Wykonywanie określonej akcji.
  3. Stan aplikacji (zwinięty lub nie).

Widmo może być znacznie większe. Wyrażenia warunkowe występują w kilku typach:

  1. Z jedną gałęzią. Oznacza to, że przeprowadzana jest pojedyncza kontrola, w wyniku której wykonywane są określone czynności.
  2. Z dwoma lub więcej gałęziami. Jeśli kryterium 1 jest prawdziwe, sprawdź kryterium 2. Jeśli jest prawdziwe, sprawdź 3. I tak wykonaj tyle sprawdzeń, ile potrzeba.
  3. Z kilkoma warunkami. Tutaj wszystko jest proste. Tłumacz sprawdza, czy występuje wiele warunków lub jeden z nich.

instrukcja if

Struktura instrukcji if jest podobna we wszystkich językach. Jednak w Pythonie jego składnia różni się nieco od wszystkich pozostałych:

jeśli warunek:

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

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

<не одящее ажение>

Najpierw deklarowany jest sam operator, po czym zapisywany jest warunek, pod którym zaczyna działać. Warunek może być prawdziwy lub fałszywy.

Po nim następuje blok z poleceniami. Jeśli natychmiast następuje po kryterium, które ma zostać spełnione, odpowiednia sekwencja poleceń nazywana jest blokiem if. Możesz użyć w nim dowolnej liczby poleceń.

Uwaga! Wcięcie we wszystkich poleceniach bloku if musi mieć ten sam rozmiar. Granice bloków są określone przez wcięcia. 

Zgodnie z dokumentacją językową wcięcie ma 4 spacje. 

Jak działa ten operator? Gdy interpreter widzi słowo if, natychmiast sprawdza wyrażenie pod kątem kryteriów określonych przez użytkownika. Jeśli tak jest, zaczyna szukać instrukcji i ich przestrzegać. W przeciwnym razie wszystkie polecenia z tego bloku są pomijane.

Jeśli instrukcja po warunku nie ma wcięcia, nie jest traktowana jako blok if. W naszej sytuacji ta linia jest . Dlatego niezależnie od wyniku sprawdzenia ten wiersz zostanie wykonany.

Oto fragment kodu przedstawiający przykład działania tego operatora.

number = int(input("Wprowadź liczbę:"))

jeśli liczba > 10:

    print("Liczba jest większa niż 10")

Ten program pyta użytkownika o numer i sprawdza, czy jest on większy niż 10. Jeśli tak, zwraca odpowiednią informację. Na przykład, jeśli użytkownik wprowadzi cyfrę 5, program po prostu się zakończy i to wszystko.

Ale jeśli podasz liczbę 100, tłumacz zrozumie, że jest to więcej niż dziesięć, i zgłosi to.

Uwaga! W naszym przypadku, jeśli warunek jest fałszywy, program zatrzymuje się, ponieważ po instrukcji nie są wydawane żadne polecenia.

W powyższym kodzie jest tylko jedno polecenie. Ale jest ich znacznie więcej. Jedynym wymaganiem jest wcięcie.

Przeanalizujmy teraz tę sekwencję poleceń.

number = int(input("Wpisz liczbę:"))

jeśli liczba > 10:

    print("pierwsza linia")

    print("druga linia")

    print(„trzecia linia”)

print("Wiersz, który jest wykonywany, niezależnie od wprowadzonej liczby")

print("Zakończ aplikację")

Spróbuj zgadnąć, jaki będzie wynik, jeśli wpiszesz wartości 2, 5, 10, 15.

Jak widać, jeśli liczba wpisana przez użytkownika jest większa niż dziesięć, to wychodzą trzy linie + jeden z tekstem „Uruchamiaj za każdym razem…” i jeden „Koniec”, a jeśli mniej niż dziesięć, to tylko jeden, z inny tekst. Tylko wiersze 3,4,5 zostaną wykonane, jeśli są prawdziwe. Jednak ostatnie dwie linijki zostaną zapisane bez względu na numer podany przez użytkownika.

Jeśli użyjesz instrukcji bezpośrednio w konsoli, wynik będzie inny. Tłumacz natychmiast włącza tryb wielowierszowy, jeśli po określeniu kryterium weryfikacji naciśniesz Enter.

Załóżmy, że napisaliśmy następującą sekwencję poleceń.

>>>

>>> n = 100

>>> jeśli n > 10:

...

Po tym zobaczymy, że >>> zostało zastąpione przez wielokropek. Oznacza to, że włączony jest tryb wprowadzania wieloliniowego. W prostych słowach, jeśli naciśniesz Enter, zostaniesz przeniesiony do wejścia drugiego etapu instrukcji. 

Aby wyjść z tego bloku, musisz dodać do bloku jeszcze jedną konstrukcję if.

>>>

>>> n = 100

>>> jeśli n > 10:

… drukuj(«nv 10»)

...

Jeśli warunek nie jest spełniony, program kończy się. Jest to problem, ponieważ użytkownik może postrzegać taki program jako zamknięty z powodu awarii. Dlatego konieczne jest przekazanie informacji zwrotnej użytkownikowi. W tym celu używany jest link Jeśli inaczej.

operator wyrażenia Jeśli inaczej

Ten operator umożliwia zaimplementowanie linku: jeśli wyrażenie pasuje do określonej reguły, wykonaj te czynności, a jeśli nie, to inne. Oznacza to, że pozwala podzielić przebieg programu na dwie drogi. Składnia jest intuicyjna:

jeśli warunek:

    # jeśli blok

    oświadczenie 1

    oświadczenie 2

    i tak dalej

jeszcze:

    # inny blok

    oświadczenie 3

    oświadczenie 4

    i tak dalej:

Wyjaśnijmy, jak działa ten operator. Najpierw w wątku wykonywana jest instrukcja standardowa cis, sprawdzanie, czy pasuje warunek "prawda czy fałsz". Dalsze działania zależą od wyników kontroli. Jeśli prawda, instrukcja znajdująca się w sekwencji instrukcji następujących po warunku jest wykonywana bezpośrednio. cis, jeśli to jest fałszywe, to więcej

W ten sposób poradzisz sobie z błędami. Na przykład użytkownik musi wprowadzić promień. Oczywiście może to być tylko liczba ze znakiem plus lub jest to wartość null. Jeśli jest mniejszy niż 0, musisz wysłać wiadomość z prośbą o wprowadzenie liczby dodatniej. 

Oto kod, który realizuje to zadanie. Ale jest tu jeden błąd. Spróbuj zgadnąć, który. 

promień = int(input("Wprowadź promień:"))

jeśli promień >= 0:

    print("Obwód = ", 2 * 3.14 * promień)

    print("Obszar = ", 3.14 * promień ** 2)

    jeszcze:

        print("Proszę podać liczbę dodatnią")

Błąd niezgodności wcięć. Jeśli и Inny muszą znajdować się bez nich lub z taką samą ich liczbą (w zależności od tego, czy są zagnieżdżone, czy nie).

Podajmy inny przypadek użycia (gdzie wszystko będzie się zgadzać z ustawieniem operatora) – element aplikacji sprawdzający hasło.

hasło = input("Wprowadź hasło: ")

jeśli hasło == «sshh»:

    print("Witamy")

jeszcze:

    print("Odmowa dostępu")

Ta instrukcja pomija osobę dalej, jeśli hasło to sshh. Jeśli jakakolwiek inna kombinacja liter i cyfr, to wyświetla komunikat „Odmowa dostępu”.

wyrażenie-wyrażenie if-elif-else

Tylko wtedy, gdy kilka warunków nie jest spełnionych, wykonywana jest instrukcja znajdująca się w bloku. więcej. To wyrażenie działa tak.

jeśli warunek_1:

    # jeśli blok

    oświadczenie

    oświadczenie

    więcej oświadczenia

warunek elif_2:

    # pierwszy blok elif

    oświadczenie

    oświadczenie

    więcej oświadczenia

warunek elif_3:

    # drugi blok elif

    oświadczenie

    oświadczenie

    więcej oświadczenia

...

więcej

    oświadczenie

    oświadczenie

    więcej oświadczenia

Możesz określić dowolną liczbę dodatkowych warunków.

Zagnieżdżone oświadczenia

Innym sposobem na zaimplementowanie wielu warunków jest wstawienie dodatkowych kontroli warunków w bloku if.

Operator if wewnątrz innego bloku warunku

gre_score = int(input("Wprowadź swój aktualny limit kredytowy"))

per_grad = int(input("Wprowadź swoją zdolność kredytową:"))

jeśli na stopień > 70:

    # zewnętrzne jeśli blok

        jeśli gre_score > 150:

            # wewnętrzna, jeśli blok

    print("Gratulacje, otrzymałeś pożyczkę")

jeszcze:

    print("Przepraszamy, nie kwalifikujesz się do pożyczki")

Ten program przeprowadza kontrolę zdolności kredytowej. Jeśli wynosi mniej niż 70, program zgłasza, że ​​użytkownikowi nie przysługuje kredyt. Jeśli jest większa, przeprowadzana jest powtórna kontrola, czy aktualny limit kredytowy jest większy niż 150. Jeśli tak, to wyświetlany jest komunikat, że pożyczka została udzielona.

Jeżeli obie wartości są fałszywe, to wyświetla się komunikat, że użytkownik nie ma możliwości uzyskania pożyczki. 

Teraz trochę przeróbmy ten program.

gre_score = int(input("Wprowadź ograniczenie prądu:"))

per_grad = int(input("Wprowadź ocenę kredytową:"))

jeśli na stopień > 70:

    jeśli gre_score > 150:

        print("Gratulacje, otrzymałeś pożyczkę")

    jeszcze:

        print("Twój limit kredytowy jest niski")

jeszcze:

    print("Przepraszamy, nie kwalifikujesz się do kredytu")

Sam kod jest bardzo podobny, ale zagnieżdżony if zapewnia również algorytm na wypadek, gdyby warunek z niego okazał się fałszywy. Oznacza to, że limit na karcie jest niewystarczający, ale historia kredytowa jest dobra, wyświetla się komunikat „Masz niską zdolność kredytową”.

instrukcja if-else wewnątrz warunku więcej

Zróbmy inny program, który określa ocenę ucznia na podstawie wyników testu.

score = int(input("Wprowadź swój wynik:"))

jeśli wynik >= 90:

    print("Świetnie! Twoja ocena to A")

jeszcze:

    jeśli wynik >= 80:

print("Świetnie! Twoja ocena to B")

    jeszcze:

jeśli wynik >= 70:

    print("Dobrze! Twoja ocena to C")

jeszcze:

    jeśli wynik >= 60:

print(„Twoja ocena to D. Warto powtórzyć materiał.”)

    jeszcze:

print("Nie zdałeś egzaminu")

Aplikacja najpierw sprawdza, czy wynik jest większy lub równy 90. Jeśli tak, zwraca ocenę A. Jeśli ten warunek jest fałszywy, wykonywane są kolejne sprawdzenia. Na pierwszy rzut oka widzimy, że algorytm jest prawie taki sam. Więc zamiast zaglądać do środka więcej lepiej użyć kombinacji jeśli-elif-inaczej.

Więc operator if pełni bardzo ważną funkcję – dba o to, aby określone fragmenty kodu były wykonywane tylko wtedy, gdy jest taka potrzeba. Bez niego nie można sobie wyobrazić programowania, bo nawet najprostsze algorytmy wymagają rozwidlenia typu „jeśli pójdziesz w lewo, to znajdziesz, a jeśli pójdziesz w prawo, to musisz zrobić to i owo”.

Dodaj komentarz