Python: kurs programowania. Część III: pętle i instrukcja warunkowa
Prawie każdy język programowania ma możliwość cyklicznego przetwarzania instrukcji i podejmowania decyzji. Mechanizmy te zwane popularnie pętlami oraz instrukcjami warunkowymi występują również w Pythonie. Stanowią one podstawę dla programowania imperatywnego. W tej części kursu dowiesz się, jak wykorzystać ich potencjał.
Instrukcja warunkowa
Z instrukcją warunkową zapoznałeś się już w części pierwszej. Zawiera ona jednak pewne rozszerzenia. Aby je przedstawić, rozpatrzmy program, który pobiera od użytkownika wartość siły wiatru w skali Beauforta.
skala = int(input('Podaj liczbę opisującą intensywność wiatru w skali Beauforta: '))
if skala <= 4:
print('Spokojnie. Możesz wypływać!')
else:
print('Zostań w porcie!')
Program sprawdzi, czy stopień wzburzenia akwenu jest mniejszy lub równy od czterech. Jeżeli tak, zezwoli na wypłynięcie z przystani. W każdym innym wypadku wyświetli komunikat "Zostań w porcie!". Klauzla else wykona się zawsze, gdy warunek nie zostanie spełniony. Nasz program mógłby być jednak bardziej zabawny i zawierać różne komunikaty dla różnych skali. Do sprawdzania kolejnych warunków służy instrukcja elif.
skala = int(input('Podaj liczbę opisującą intensywność wiatru w skali Beauforta: '))
if skala == 0:
print('Że niby będziesz wiosłować?')
elif skala <= 4:
print('Spokojnie. Możesz wypływać!')
elif skala >= 8 and skala <= 12:
print('To sobie wybrałeś pogodę na żeglowanie.')
elif skala < 0 or skala > 12:
print('Chyba za dużo dzisiaj wypiłeś.')
else:
print('Zostań w porcie!')
Warunki są sprawdzane jeden po drugim (od góry do dołu), do momentu aż Python natrafi na prawdziwy. Wtedy zaprzestaje dalszego szukania i wykonuje przypisany do prawdziwego warunku kod. W przypadku nieznalezienia żadnego wykonuje instrukcje zawarte w klauzuli else. Zauważ, że ponieważ Python zaprzestaje dalszego sprawdzania, gdy natrafi na spełniony warunek, ważna jest kolejność, w której zapisujemy nasze warunki.
| Warunki można łączyć z użyciem instrukcji or (pol. lub) i and (pol. i). Działają one jak logiczna alternatywa i koniunkcja dla wartości Booleana.
Logiczne "i" zwraca prawdę wyłącznie wtedym gdy oba warunki są prawdziwe. Logiczne "lub", gdy spełniony jest przynajmniej jeden z nich. |
Innym zastosowaniem instrukcji warunkowych prezentującym je w całej krasie może być chęć pogratulowania rocznicy ślubu z wyświetleniem jej nazwy.
rocznica = int(input('Podaj, którą rocznicę ślubu będziecie teraz obchodzili: '))
nazwa = ''
if (rocznica == 25):
nazwa = 'srebrnej'
elif (rocznica == 30):
nazwa = 'perłowej'
elif (rocznica == 35):
nazwa = 'koralowej'
elif (rocznica == 40):
nazwa = 'rubinowej'
elif (rocznica == 45):
nazwa = 'szafirowej'
elif (rocznica == 50):
nazwa = 'złotej'
else:
nazwa = str(rocznica) + '.'
print('Wszystkiego najlepszego z okazji', nazwa, 'rocznicy ślubu!')
Powyższy program pobiera od użytkownika liczbę wskazującą obchodzoną rocznicę ślubu. Aby móc sprawdzić przynajmniej kilka rocznic, instrukcja if rozbudowana została o kolejne warunki. W wypadku gdy podana rocznica ślubu nie mieści się wśród przewidzianych przez nas przypadków (klauzula else), jako nazwę traktujemy numerek z dopisaną kropką.
Klauzuli else można bardzo często uniknąć, nadając początkowo domyślną wartość zmiennej. W naszym przypadku nazwa była przed wykonaniem bloku if pusta. Nic nie stoi jednak na przeszkodzie nadania jej wartości domyślnej, a później ewentualnego jej nadpisania.
rocznica = int(input('Podaj, którą rocznicę ślubu będziecie teraz obchodzili: '))
nazwa = str(rocznica) + '.'
if (rocznica == 25):
nazwa = 'srebrnej'
elif (rocznica == 30):
nazwa = 'perłowej'
elif (rocznica == 35):
nazwa = 'koralowej'
elif (rocznica == 40):
nazwa = 'rubinowej'
elif (rocznica == 45):
nazwa = 'szafirowej'
elif (rocznica == 50):
nazwa = 'złotej'
print('Wszystkiego najlepszego z okazji', nazwa, 'rocznicy ślubu!')
W tej formie domyślnie nadajemy nazwie formę "liczba". Jeżeli jednak jest to okrągła rocznica, którą zna nasz program, nadpisujemy ją odpowiednią nazwą. To, które rozwiązanie zastosujesz, zależy od Ciebie.
«poprzednia 1 2 3 4 ... 5 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
14
PHP 5.3.9 nie pozwoli hakerom zawiesić serwera. Pozwoli za to przejąć nad nim kontrolę
28
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
26
Internet w EU bez Facebooka i Google? Firmy nie mają wyboru: albo się dostosują, albo…
10
Zaktualizuj PHP do wersji 5.4, zyskasz za darmo nawet o kilkudziesiąt procent wyższą wydajność aplikacji
6
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Klamka jeszcze nie zapadła. Minister prosi Donalda Tuska, by wstrzymał się z podpisywaniem ACTA
24
Społeczność
Ebhossmith Witam jestem Pan Ebhossmith, Dobre, uzasadnione i wiarygodne pożyczki...
DerDevil Mnie zatkało. Taka kwota i to w tak krótkim czasie. A najlepsze jest w tym...
sLn Tytuł rodem z onetu lub faktu...
1 primo - pobieranie nie jest...
ananas Pani Joanna powinna częściej czytać Matta Cuttsa i zaglądać na forum...
hipokryci Warto zauważyć, że przeważająca część instytucji publicznych również...
kajoj Ja już w takim razie nie rozumiem..co jest karane a co nie...udostępnianie...
Dawid11111 dokładnie ponieważ polskie prawo mówi jasno: można pobierać dla własnego...
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |










#1 D3vill® 2010-02-03 21:37:00 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#2 jaczor 2010-02-04 09:52:56 0
IP: 83.20.71.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#3 szuki® 2010-02-04 10:28:07 0
IP: 89.171.198.[...] Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8
#4 d0kt0r 2010-02-05 10:09:58 0
IP: 79.188.98.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
#5 wojtekm 2010-02-10 09:52:42 0
IP: 85.219.135.[...] Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
#6 Jan Koprowski® 2010-02-10 10:11:00 0
IP: 192.198.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
#7 wojtekm 2010-02-10 10:52:40 0
IP: 85.219.135.[...] Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
#8 wojtekm 2010-02-10 10:54:35 0
IP: 85.219.135.[...] Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
#9 sharki1855 2011-06-19 17:18:33 0
IP: 178.36.71.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1