1.5. Instrukcja warunkowa IF
Prezentacja
Python wymaga, aby w instrukcji if, po określeniu warunku następowało wcięcie kolejnej linijki kodu. Nie ma ściśle określonej liczby spacji, ani tabulatorów, ale ważne jest to, żeby wewnątrz danej instrukcji być konsekwentnym – jeśli raz użyjemy jako wcięcia czterech spacji, to kolejna linijka też tyle musi mieć – inaczej Python zwróci błąd indentencji.
Składnia
Prosta instrukcja if
– jeśli warunek
zwróci wartość True
, obie instrukcje zostaną wykonane:
1 2 3 | if warunek: instrukcja1 instrukcja2 |
Instrukcja if
– else
– jeśli warunek
zwróci wartość True
, wykonana zostanie instrukcja1
, a jeśli False
– instrukcja2
:
1 2 3 4 | if warunek: instrukcja1 else: instrukcja2 |
Instrukcja if
– elif
– else
– jeśli warunek1
zwróci wartość True
, wykonana zostanie instrukcja1
. Jeśli warunek1
zwróci wartość False
, to dzięki instrukcji elif
zostaje sprawdzany warunek2
. Jeśli on ma wartość True
, to wykonana zostanie instrukcja2
, a jeśli False
poprzez instrukcję else
– skrypt wykona instrukcja3
:
1 2 3 4 5 6 | if warunek1: instrukcja1 elif warunek2: instrukcja2 else: instrukcja3 |
Zadania
Zadanie 1. Stwórz skrypt, który sprawdzi, czy podana liczba zapisana w zmiennej a
jest podzielna przez 3.
Zadanie 2. Napisz skrypt, który sprawdzi, czy imię podane w zmiennej name
jest imieniem żeńskim (zakładamy, że każde imię żeńskie kończy się na literę a).
Zadanie 3. Napisz program, który będzie zamieniał ludzkie lata na psie według instrukcji: Przez pierwsze dwa lata 1 psi rok jest równy 10.5 ludzkiego roku. Po tym czasie każdy psi rok jest jak cztery ludzkie lata.
Zadanie 4. Jakie wartości zwróci poniższa instrukcja warunkowa w zależności od wartości zmiennej a
:
1 2 3 4 5 6 | if a-10 > 0: print("pies") elif a % 2 == 0: print("kot") else: print("papuga") |
Określ wynik dla a
równego 11, -5, 2, 7.
Rozwiązania
Zadanie 1. Najpierw ustawiamy zmienną a
na dowolną liczbę całkowitą, a następnie tworzymy instrukcję warunkową, która inaczej będzie reagowała na liczby podzielne przez trzy, a inaczej na inne liczby. Wykorzystujemy do tego operator arytmetyczny %
, który zwraca resztę dzielenia liczby przez inną liczbę.
Za każdym razem kiedy a % 3
będzie zerem – będzie to oznaczało, że jest to liczba podzielna przez 3. W innych przypadkach, czyli gdy reszta będzie inna niż 3, na ekranie pojawi się komunikat, że liczba a
będzie niepodzielna przez 3.
1 2 3 4 5 | a = 12 if a % 3 == 0: print("Jest podzielna przez 3") else: print("Nie jest podzielna przez 3") |
Zadanie 2. Imiona żeńskie, zgodnie z założeniem z treści zadania, powinny kończyć się literą a. Musimy zatem stworzyć skrypt, który będzie sprawdzał ostatnią literę imienia podanego w zmiennej name
. Ta litera jest możliwa do przechwycenia za pomocą indeksu name[-1]
.
Jeśli name[-1]
będzie równa literze a, to podane imię będzie imieniem żeńskim, a w każdym innym przypadku będzie to imię męskie.
1 2 3 4 5 | name = "Joanna" if name[-1] == "a": print("Żeńskie") else: print("Męskie") |
Zadanie 3. Na początku należy zauważyć, że wiek psa będziemy liczyć inaczej w zależności od tego czy pies ma mniej, czy więcej niż 2 lata. Jeśli mniej – to jego wiek będziemy mnożyć przez 10.5
. Dla starszego psa możemy sobie rozpisać jak miałoby to wyglądać:
- pies 3-letni: 25 lat, bo to 21 + 4,
- pies 4-letni: 29 lat, bo to 21 + 2 * 4,
- pies 5-letni: 33 lata, bo to 21 + 3 * 4.
Co można zauważyć? To, że jeśli pies ma n-lat, to jego wiek obliczymy ze wzoru 21 + (n - 2) * 4
. Taką też należy zapisać instrukcję warunkową w naszym skrypcie.
1 2 3 4 5 | wiek = 10 if wiek <= 2: print(wiek * 10.5) else: print(21 + (wiek - 2) * 4) |
Zadanie 4.
- Dla -11 instrukcja warunkowa zwróci wartość
"pies"
, - Dla -5 instrukcja zwróci wartość
"papuga"
, - Dla 2 zwróci
"kot"
, - Dla 7 dostaniemy rezultat
"papuga"
.