LEKCJA 2. Program podejmuje decyzje – instrukcja warunkowa

Temat 1/ Klasa 3/ Lekcja 2

1. Po co programowi decyzje?

Nie każdy program wykonuje zawsze dokładnie te same czynności.

Przykład:

Jeżeli temperatura jest niższa od 0°C, wyświetl ostrzeżenie „Uwaga, mróz!”.

Program musi sprawdzić warunek i na jego podstawie zdecydować, co zrobić.

Służy do tego instrukcja warunkowa if.


2. Warunek

Warunek to wyrażenie, którego wynik może być prawdziwy albo fałszywy.

Na przykład:

wiek >= 18

Warunek oznacza:

Czy wartość zmiennej wiek jest większa lub równa 18?

Przydatne operatory porównania:

  • > – większe niż,
  • < – mniejsze niż,
  • >= – większe lub równe,
  • <= – mniejsze lub równe,
  • == – równe,
  • != – różne.

Uwaga:

=

służy do przypisania wartości:

wiek = 17

Natomiast:

==

służy do porównywania:

wiek == 17

3. Instrukcja if

Przykład:

temperatura = float(input("Podaj temperaturę: "))
if temperatura < 0:
print("Uwaga, mróz!")

Jeżeli użytkownik poda -5, komunikat zostanie wyświetlony.

Jeżeli poda 10, program nie wykona instrukcji znajdującej się wewnątrz if.

Zwróć uwagę na:

:

po warunku oraz wcięcie przed print().

W Pythonie wcięcia mają znaczenie.


4. if i else

Często chcemy przewidzieć dwie możliwości.

wiek = int(input("Podaj wiek: "))
if wiek >= 18:
print("Osoba pełnoletnia")
else:
print("Osoba niepełnoletnia")

else oznacza:

wykonaj te instrukcje, jeżeli warunek w if nie został spełniony.


5. Więcej możliwości – elif

Załóżmy, że chcemy ocenić temperaturę:

  • poniżej 0 – mróz,
  • od 0 do 20 – chłodno,
  • powyżej 20 – ciepło.
temperatura = float(input("Podaj temperaturę: "))
if temperatura < 0:
print("Mróz")
elif temperatura <= 20:
print("Chłodno")
else:
print("Ciepło")

Python sprawdza warunki kolejno od góry.


6. Operatory logiczne

Czasami jeden warunek nie wystarcza.

Możemy używać:

  • and – oba warunki muszą być prawdziwe,
  • or – wystarczy, że jeden warunek jest prawdziwy,
  • not – zaprzeczenie warunku.

Przykład:

wiek = int(input("Podaj wiek: "))
if wiek >= 13 and wiek <= 19:
print("Wiek mieści się w przedziale od 13 do 19 lat.")

7. Przykład – liczba dodatnia, ujemna czy zero?

Plan:

  1. pobierz liczbę,
  2. jeżeli jest większa od 0 – wyświetl „dodatnia”,
  3. jeżeli jest mniejsza od 0 – wyświetl „ujemna”,
  4. w przeciwnym przypadku – „zero”.
liczba = float(input("Podaj liczbę: "))
if liczba > 0:
print("Liczba dodatnia")
elif liczba < 0:
print("Liczba ujemna")
else:
print("Zero")

8. Testowanie programu

Programu nie wystarczy napisać. Trzeba sprawdzić, czy działa.

Dla poprzedniego programu warto przetestować co najmniej:

5
-3
0

Dlaczego?

Ponieważ każda wartość sprawdza inną możliwość.

Takie wartości nazywamy danymi testowymi.


Zadanie podsumowujące

Napisz program pobierający liczbę punktów ucznia.

Jeżeli uczeń zdobył co najmniej 50 punktów, program powinien wyświetlić:

Zaliczone

W przeciwnym przypadku:

Niezaliczone

Najpierw napisz i przetestuj własny program.

Które rozwiązanie jest prawidłowe?

A

punkty = int(input("Podaj liczbę punktów: "))
if punkty > 50:
print("Zaliczone")
else:
print("Niezaliczone")

B

punkty = int(input("Podaj liczbę punktów: "))
if punkty >= 50:
print("Zaliczone")
else:
print("Niezaliczone")

C

punkty = int(input("Podaj liczbę punktów: "))
if punkty <= 50:
print("Zaliczone")
else:
print("Niezaliczone")

D

punkty = int(input("Podaj liczbę punktów: "))
if punkty >= 50:
print("Niezaliczone")
else:
print("Zaliczone")

Wskazówka

Wyrażenie „co najmniej 50” oznacza:

50 lub więcej

Zastanów się szczególnie, co powinno się wydarzyć dla dokładnie 50 punktów.

Odpowiedź

Prawidłowa odpowiedź: B.

Warunek:

punkty >= 50

obejmuje również dokładnie 50 punktów.

A jest błędne, ponieważ > 50 nie obejmuje wartości 50.

C jest błędne, ponieważ warunek został odwrócony.

D jest błędne, ponieważ komunikaty zostały zamienione miejscami.

Dobre dane testowe to:

49
50
51

Szczególnie ważna jest wartość graniczna 50.


Zadanie z gwiazdką ★

Napisz program, który pobiera temperaturę i wyświetla:

  • Mróz – gdy temperatura jest mniejsza od 0,
  • Chłodno – gdy wynosi od 0 do 15 włącznie,
  • Ciepło – gdy jest większa od 15.

Rozwiązanie

temperatura = float(input("Podaj temperaturę: "))
if temperatura < 0:
print("Mróz")
elif temperatura <= 15:
print("Chłodno")
else:
print("Ciepło")

Do sprawdzenia programu warto wykorzystać między innymi:

-1
0
15
16

Są to wartości znajdujące się przy granicach poszczególnych przedziałów.