Rozdział 10 · Trochę automatyzacji!

Cykle while

for potrafi przechodzić nie tylko przez liczby, ale while powtarza tę czynność, dopóki warunek pozostaje spełniony, bez względu na to, ile razy to potrwa.

Gdy liczba powtórzeń nie jest znana z góry

for jest świetne, gdy wiemy z góry, ile razy Musisz powtórzyć czynność – "4 boki kwadratu", "wszystkie litery słowa". A co jeśli Liczba powtórzeń nie jest znana z góry – na przykład: "Powtarzaj, aż użytkownik zgadnie liczba"? Dla takich problemów istnieje drugi typ cyklu — while.

Cykle while

W przeciwieństwie do for, while powtarza się ten warunek nadal jest prawdziwy:

cikl_while.py
count = 0
while count < 5:
    print(count)
    count += 1

Kanoniczne flowchart cyklu while

STARTcount = 0count < 5?TAKprint(count)count += 1temuNIEKONIEC
while count < 5: – sprawdzanie stanu PRZED każdym ciałem, w tym pierwszym

Trzy części cyklu while

CzęśćKodeksRola
Inicjalizacjacount = 0przygotowuje stan PRZED pierwszym sprawdzeniem warunku
Stancount < 5sprawdzane przed każdą iteracją, w tym pierwszą
Aktualizacjacount += 1zmienia stan tak, aby warunek w końcu stał się fałszywy
IteracjaSprawdzanie count lt 5Podsumowaniecount po kroku
10 < 5 → tak01
21 < 5 → tak12
32 < 5 → tak23
43 < 5 → tak34
54 < 5 → tak45
5 < 5 → niepętla zakończona
while jest pre-test cykl
Stan w while sprawdzane do ciało, co oznacza, że jeśli warunek jest początkowo fałszywy, ciało nie zostanie w ogóle wykonane (zero iteracji). W Python nie ma osobnej pętli „najpierw wykonaj, potem sprawdź” do/while) — jeśli takie zachowanie jest potrzebne, symulują je poprzez while True z break na końcu ciała (tę technikę zobaczymy na następnej stronie).

Nieskończona pętla – celowo i przypadkowo

Dokładnie przyjrzyj się temu kodowi:

beskonechnyj_cikl.py
count = 0
while count < 5:
    print(count)
    # zapomniałem count += 1!
STARTprint(count)count < 5?TAK – powtarzamNIEKONIEC
Stan (count) nie zmienia się między iteracjami – warunek ten pozostaje prawdziwy na zawsze
Jak zatrzymać zamrożony program
Jeśli program utknął w nieskończonej pętli, kliknij Ctrl+C (lub przycisk „Stop”/„Interrupt kernel” w Jupyter). Zawsze sprawdzaj, co jest w środku while istnieje krok, który prędzej czy później sprawi, że stan zostanie fałszywy.

while True też jest normalne

while True tworzy pętlę, której stan sam nigdy się nie powtórzy nie stanie się fałszywym — jedynym wyjściem: break wewnątrz ciała. Jest to powszechna i absolutnie poprawna technika, gdy stan zatrzymania jest bardziej naturalny Sprawdź na środku ciała, a nie na początku – użyjemy tego na następnej stronie.

while True samo w sobie nie jest błędem
while True: nie jest samo w sobie „złą praktyką” — to świadome narzędzie. Problem pojawia się dopiero wtedy, gdy wewnątrz zapomni się ustawić break – wtedy ten cykl naprawdę nigdy się nie skończy.

Iteracja po łańcuchach znaków — przypomnienie

Struna to łańcuch znaków (Rozdział 8) — for potrafi iterować po niej bezpośrednio, bez indeksów (szczegółowa analiza indeksu i wartości — na stronie o enumerate()):

perebor_strok.py
for letter in "Python":
    print(letter)

for czy while?

Wytyczne, a nie sztywne reguły
Liczba powtórzeń jest znana wcześniej („narysuj 4 boki”, „przejdź przez wszystkie litery”)
for
Liczba powtórzeń nie jest znana z góry („dopóki użytkownik nie zgadnie”
while
Bardziej naturalne jest sprawdzanie stanu zatrzymania się w środku ciała
while True + break
Musisz przejść przez gotową sekwencję (łańcuch znaków, lista, range)
for
Oba rodzaje pętli są równie potężne pod względem Python — wybór wpływa na czytelność kodu, a nie na to, co w ogóle jest możliwe
Praktyka: pętle while
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →
Praktyka: for czy while – którą wybrać wybrać?
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →