Pętla while
Wstęp
Często problem, który chcemy rozwiązać, wymaga powtarzania jakiejś operacji. Jest tak np. w przypadku wielokrotnego sprawdzania, czy wpisane hasło jest poprawne. Pętla while umożliwia wykonywanie fragmentu kodu wielokrotnie. Stosując ją, można zautomatyzować powtarzalne czynności.
while
Pętla while ma następujący schemat:
while warunek:
wiersz kodu do wykonania
wiersz kodu do wykonania
wiersz kodu do wykonania
...
Jak widać powyżej, zaczynamy ją słowem kluczowym while, a po spacji zapisujemy warunek zakończony dwukropkiem.
Warunkiem może być na przykład wspomniane wcześniej sprawdzenie poprawności hasła lub sprawdzenie, czy liczba jest z oczekiwanego zakresu. Więcej o konstruowaniu warunków można przeczytać w poprzednich artykułach ,,Instrukcja warunkowa” oraz ,,Operatory logiczne”.
Jeśli warunek pętli jest spełniony (prawdziwy), to zostaną wykonane instrukcje zapisane w bloku rozpoczynającym się w kolejnym wierszu. Instrukcje w bloku są wyróżnione dodatkowym wcięciem. Po wykonaniu bloku instrukcji program wraca na początek pętli i ponownie sprawdza warunek. Jeśli natomiast warunek nie jest spełniony, to program pomija blok pętli i przechodzi dalej.
Oto przykładowy program wykorzystujący pętlę while do wypisania kolejnych liczb naturalnych od 1 do 9.
liczba = 1
while liczba < 10:
print(liczba)
liczba = liczba + 1
Na początku tworzymy zmienną liczba i przypisujemy jej wartość 1. Następnie, dopóki liczba jest mniejsza niż 10, dopóty wypisujemy jej wartość i zwiększamy ją o jeden. Pętla wykona się dokładnie 9 razy. Po dziewiątym kroku zmienna liczba będzie miała wartość 10, więc warunek nie będzie spełniony i pętla zakończy działanie.
Operatory przypisania
W lekcji ,,Zmienne” poznaliśmy operator przypisania. Istnieje wiele rodzajów tego operatora, dzięki którym możemy pisać krótsze i bardziej czytelne kody. Kiedy do wartości zmiennej chcemy dodać ustaloną wartość możemy napisać:
liczba += 1
Po lewej stronie operatora += znajduje się nazwa zmiennej, do której dodajemy wartość wyrażenia zapisanego po prawej stronie operatora. Powyższy kod jest równoważny zapisowi:
liczba = liczba + 1
Skrócone operatory przypisania
Skrócony zapis | Rozwinięcie | Opis |
x -= 2 * 6 | x = x - (2 * 6) | liczbę zmniejszamy o 12 |
x *= 3 + 4 | x = x * (3 + 4) | liczbę mnożymy razy 7 |
x /= 2**3 | x = x / 2**3 | liczbę dzielimy przez 8 |
x //= 2 | x = x // 2 | liczbę dzielimy przez 2 bez reszty |
x %= (5 - 3) | x = x % (5 - 3) | liczbę modulujemy przez 2 |
Ćwiczenie
Napisz program, który wczyta liczbę dodatnią N oraz za pomocą pętli while wypisze wszystkie liczby naturalne od N do 1, od największej do najmniejszej. Zarówno N, jak i 1 powinny znajdować się wśród wypisanych liczb. Liczby powinny być oddzielone spacjami. Do wypisania spacji po liczbie (zamiast domyślnego przejścia do nowego wiersza) możesz użyć konstrukcji print(liczba, end=' '). Na przykład dla N = 5, program powinien wypisać 5 4 3 2 1.
Spróbuj powyższe zadanie rozwiązać samodzielnie. Poniżej możesz zobaczyć poprawne rozwiązanie.
N = int(input())
while N >= 1:
print(N, end=' ')
N -= 1
Na początku wczytujemy wartość do zmiennej N. Następnie, dopóki N jest większa lub równa 1, dopóty wypisujemy jej wartość i zmniejszamy ją o jeden. Pętla wykona się dokładnie N razy. Po ostatnim wykonaniu zmienna N będzie miała wartość 0, więc warunek nie będzie spełniony i pętla zakończy działanie.
Trenuj z nami!
Pisanie programów jest bardzo ważnym elementem nauki programowania. Możesz to robić rozwiązując zadania (mikroprojekty) dostępne na naszej platformie edukacyjnej Codeforia. Rozwiązania są sprawdzane automatycznie, a po chwili od wysłania kodu dowiesz się, czy jest ono poprawne, czy wymaga zmian. Zapraszamy również na regularne zajęcia online, gdzie będziesz mógł/mogła rozwijać się pod okiem doświadczonego trenera.
Zobacz nasze dostępne kursy.