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 ifelse – jeśli warunek zwróci wartość True, wykonana zostanie instrukcja1 , a jeśli Falseinstrukcja2 :

1
2
3
4
if warunek:
    instrukcja1
else:
    instrukcja2

Instrukcja ifelifelse – 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".