Budowa pętli while

Przyjrzyjmy się pętli while i jej składni w języku Python.

Linia 1. while TEST dwukropek. Linia 2. kratka instrukcja 1 bloku kodu. Linia 3. kratka instrukcja 2 bloku kodu. Linia 4. kratka otwórz nawias kwadratowy kropka kropka kropka zamknij nawias kwadratowy.

Wyrażenie TEST jest wyrażeniem logicznym (jego wartość to prawda lub fałsz) i może być zapisane z wykorzystaniem operatorów logicznych, relacji lub porównania:

Linia 1. while zmienna zamknij nawias ostrokątny 12 dwukropek. Linia 2. kratka instrukcja 1. Linia 3. kratka instrukcja 2.

Instrukcje wewnętrzne pętli są wykonywane, dopóki wartość wyrażenia TEST to PRAWDA (wartość logiczna True).

Ważne!

Pamiętaj, aby tak skonstruować wyrażenie TEST oraz instrukcje wewnętrzne pętli, by pętla mogła się zakończyć. Pętlę, która nigdy nie zostanie zakończona, nazywamy pętlą nieskończoną:

Linia 1. while True dwukropek. Linia 2. print otwórz nawias okrągły apostrof Witaj wykrzyknik apostrof zamknij nawias okrągły.

Powyższa pętla będzie w nieskończoność wypisywać na standardowym wyjściu słowo Witaj!

Przykład 1

Przygotujmy kod, który pozwoli stworzyć ciąg znaków. Do początkowo pustego ciągu będziemy dodawać znaki podane przez użytkownika tak długo, aż użytkownik wprowadzi znak „!” (wykrzyknik). Na końcu napis zostanie wypisany na ekranie.

Program zakończy swoje działanie, gdy użytkownik wprowadzi wyłącznie znak „!”, poniższe wprowadzone przykładowe łańcuchy tekstowe nie zatrzymają jego działania:

  • !!!

  • a!

Zapiszmy program, który wyświetli łańcuch znaków Python!

Uwaga, wykrzyknik jest ostatnim znakiem wynikowego tekstu.

Linia 1. tekst znak równości cudzysłów cudzysłów. Linia 2. litera znak równości cudzysłów cudzysłów. Linia 3. while litera wykrzyknik znak równości cudzysłów wykrzyknik cudzysłów dwukropek. Linia 4. litera znak równości input otwórz nawias okrągły cudzysłów Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek cudzysłów zamknij nawias okrągły. Linia 5. tekst plus znak równości litera. Linia 6. print otwórz nawias okrągły tekst zamknij nawias okrągły. Linia 8. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek P. Linia 9. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek y. Linia 10. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek t. Linia 11. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek h. Linia 12. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek o. Linia 13. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek n. Linia 14. Podaj literę otwórz nawias okrągły znak apostrof wykrzyknik apostrof zakończy zamknij nawias okrągły dwukropek wykrzyknik. Linia 15. Python wykrzyknik.

Żeby program zakończył swoje działanie, użytkownik musi wprowadzić znak „!”.

W niektórych przypadkach język Python pozwala na pominięcie zapisu testu logicznego.

W tym wypadku pętla będzie się wykonywać do czasu, dopóki zmienna, której wartość badamy w warunku pętli, jest różna od None, False, bądź 0. Musimy pamiętać o modyfikacji zmiennej lub przerwaniu pętli poleceniem break.

1
Przykład 2

Pętla while, która będzie wykonywać się, dopóki zmienna całkowitoliczbowa zmienna jest większa od 0.

Linia 1. zmienna znak równości 9. Linia 2. while zmienna dwukropek. Linia 3. print otwórz nawias okrągły cudzysłów Zmienna znak równości cudzysłów przecinek zmienna zamknij nawias okrągły. Linia 4. zmienna minus znak równości 1. Linia 6. kratka efekt. Linia 7. kratka Zmienna znak równości 9. Linia 8. kratka Zmienna znak równości 8. Linia 9. kratka Zmienna znak równości 7. Linia 10. kratka Zmienna znak równości 6. Linia 11. kratka Zmienna znak równości 5. Linia 12. kratka Zmienna znak równości 4. Linia 13. kratka Zmienna znak równości 3. Linia 14. kratka Zmienna znak równości 2. Linia 15. kratka Zmienna znak równości 1.

Są przypadki, w których zaprezentowana pętla będzie nieskończona. Stanie się tak, kiedy początkowa wartość zmiennej zmienna będzie liczbą ujemną.

1
Przykład 3

Pętla while, która będzie wykonywać się, dopóki zmienna logiczna jest różna od False.

Linia 1. warunek znak równości True. Linia 2. liczba znak równości 10. Linia 3. while warunek dwukropek. Linia 4. print otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 5. if liczba otwórz nawias ostrokątny 5 dwukropek. Linia 6. warunek znak równości False. Linia 7. liczba znak równości liczba minus 1. Linia 8. kratka efekt. Linia 9. kratka 10. Linia 10. kratka 9. Linia 11. kratka 8. Linia 12. kratka 7. Linia 13. kratka 6. Linia 14. kratka 5. Linia 15. kratka 4.
1
Przykład 4

Pętla while, która będzie wykonywać się, dopóki zmienna ma ustawioną wartość (jest różna od None).

Linia 1. napis znak równości cudzysłów Ala ma kota cudzysłów. Linia 2. while napis dwukropek. Linia 3. print otwórz nawias okrągły napis zamknij nawias okrągły. Linia 4. napis znak równości None. Linia 6. kratka efekt. Linia 7. kratka Ala ma kota.
1
Przykład 5

Nieskończona pętla while, która zostanie przerwana instrukcją break.

Linia 1. zmienna znak równości 5. Linia 2. while True dwukropek. Linia 3. print otwórz nawias okrągły cudzysłów Zmienna znak równości cudzysłów przecinek zmienna zamknij nawias okrągły. Linia 4. zmienna minus znak równości 1. Linia 5. if zmienna otwórz nawias ostrokątny minus 3 dwukropek. Linia 6. break. Linia 8. kratka efekt. Linia 9. kratka Zmienna znak równości 5. Linia 10. kratka Zmienna znak równości 4. Linia 11. kratka Zmienna znak równości 3. Linia 12. kratka Zmienna znak równości 2. Linia 13. kratka Zmienna znak równości 1. Linia 14. kratka Zmienna znak równości 0. Linia 15. kratka Zmienna znak równości minus 1. Linia 16. kratka Zmienna znak równości minus 2. Linia 17. kratka Zmienna znak równości minus 3.

Pętle while i operacje na listach

Przygotujmy kod, dzięki któremu uzyskamy listę wartości całkowitych (np. ocen), które później możemy przetworzyć (np. obliczyć średnią arytmetyczną). Załóżmy, że gdy zostanie wprowadzona ocena 0, nasz program powinien zakończyć działanie.

Zmienną ocena należy zainicjować wartością różną od 0, aby warunek pętli while miał wartość True i instrukcje wewnętrzne pętli mogły zostać wykonane. Zainicjowanie zmiennej ocena wartością 0 spowoduje pominięcie pętli while i wypisanie pustej listy lista_ocen.

Linia 1. lista podkreślnik ocen znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. ocena znak równości 1. Linia 3. while ocena dwukropek. Linia 4. ocena znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 5. lista podkreślnik ocen kropka append otwórz nawias okrągły ocena zamknij nawias okrągły. Linia 6. print otwórz nawias okrągły lista podkreślnik ocen zamknij nawias okrągły.

Przykładowe działanie programu:

Linia 1. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 2. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 5. Linia 3. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 6. Linia 4. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 5. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 7. Linia 6. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 2. Linia 7. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 1. Linia 8. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 9. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 0. Linia 10. otwórz nawias kwadratowy 3 przecinek 5 przecinek 6 przecinek 3 przecinek 7 przecinek 2 przecinek 1 przecinek 3 przecinek 0 zamknij nawias kwadratowy.

Możemy zauważyć, że ostatnia wprowadzana wartość 0 dodawana jest do elementów listy. Chcielibyśmy, aby liczba kończąca (0) nie była elementem naszej listy oraz aby możliwe było dodanie tylko wartości większych od zera. Wprowadzimy modyfikację, dzięki której do listy dodamy tylko wartości większe niż 0.

Linia 1. lista podkreślnik ocen znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. ocena znak równości 1. Linia 3. while ocena dwukropek. Linia 4. ocena znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 5. if ocena zamknij nawias ostrokątny 0 dwukropek. Linia 6. lista podkreślnik ocen kropka append otwórz nawias okrągły ocena zamknij nawias okrągły. Linia 8. print otwórz nawias okrągły lista podkreślnik ocen zamknij nawias okrągły.

Przykładowe działanie programu po zmianach:

Linia 1. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 2. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 5. Linia 3. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 6. Linia 4. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 5. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 7. Linia 6. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 2. Linia 7. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 1. Linia 8. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 3. Linia 9. Podaj liczbę naturalną otwórz nawias okrągły apostrof 0 apostrof zakończy zamknij nawias okrągły dwukropek 0. Linia 10. otwórz nawias kwadratowy 3 przecinek 5 przecinek 6 przecinek 3 przecinek 7 przecinek 2 przecinek 1 przecinek 3 zamknij nawias kwadratowy.

Pętla while może posłużyć do „pobierania” kolejnych elementów z listy. Zdefiniujmy obiekt lista_t, zawierający elementy, które są po kolei usuwane z wykorzystaniem funkcji del()del()del(). Instrukcje w pętli są wykonywane, dopóki obiekt lista_t zawiera jakiekolwiek elementy. Przetestuj działanie programu:

Linia 1. lista podkreślnik t znak równości otwórz nawias kwadratowy apostrof Dura apostrof przecinek apostrof lex apostrof przecinek apostrof sed lex apostrof zamknij nawias kwadratowy. Linia 2. while lista podkreślnik t dwukropek. Linia 3. element znak równości lista podkreślnik t otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 4. del otwórz nawias okrągły lista podkreślnik t otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 5. print otwórz nawias okrągły element przecinek end znak równości apostrof apostrof zamknij nawias okrągły. Linia 7. print otwórz nawias okrągły lista podkreślnik t zamknij nawias okrągły.
11
Ćwiczenie 1

Napisz program, który w pętli będzie wykonywał następujące instrukcje tak długo, jak długo użytkownik na pytanie o chęć wykonania będzie odpowiadał „T”:

  • zada pytanie o to, jaki łańcuch znaków ma wyświetlić,

  • zada pytanie o to, ile razy go wyświetlić,

  • wyświetli określoną liczbę razy łańcuch znaków.

Specyfikacja problemu:

Dane:

  • odpowiedz – pobrana od użytkownika decyzja o kontynuowaniu działania programu; łańcuch znaków

  • n – liczba naturalna; liczba wyświetleń danego znaku

  • znak – łańcuch znaków; znak do wyświetlenia

Wynik:

Program wyświetla n-krotnie na standardowym wyjściu pobrany łańcuch znaków.

Przykładowe działanie programu:

Linia 1. Podaj znak do wyświetlenia dwukropek a. Linia 2. Ile znaków wyświetlić dwukropek 5. Linia 3. Wyświetlam dwukropek aaaaa. Linia 4. Czy wykonujemy ponownie otwórz nawias okrągły T prawy ukośnik N zamknij nawias okrągły zamknij nawias ostrokątny T. Linia 5. Podaj znak do wyświetlenia dwukropek 4. Linia 6. Ile znaków wyświetlić dwukropek 4. Linia 7. Wyświetlam dwukropek 4444. Linia 8. Czy wykonujemy ponownie otwórz nawias okrągły T prawy ukośnik N zamknij nawias okrągły zamknij nawias ostrokątny.
Dla zainteresowanych

W wersji 3.8 języka Python wprowadzono zmiany, m.in. możliwości przypisywania wartości zmiennym wewnątrz wyrażeń (opisane są one dokładnie w dokumencie PEP 572) oto przykład takiego zapisu:

Linia 1. kratka uwaga wykrzyknik ten kod działa tylko w Python zamknij nawias ostrokątny znak równości 3 kropka 8. Linia 2. while otwórz nawias okrągły polecenie dwukropek znak równości input otwórz nawias okrągły cudzysłów zamknij nawias ostrokątny cudzysłów zamknij nawias okrągły zamknij nawias okrągły wykrzyknik znak równości cudzysłów quit cudzysłów dwukropek. Linia 3. print otwórz nawias okrągły cudzysłów Wprowadzono dwukropek cudzysłów przecinek polecenie zamknij nawias okrągły. Linia 5. kratka przykład wykonania. Linia 6. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny while otwórz nawias okrągły polecenie dwukropek znak równości input otwórz nawias okrągły cudzysłów zamknij nawias ostrokątny cudzysłów zamknij nawias okrągły zamknij nawias okrągły wykrzyknik znak równości cudzysłów quit cudzysłów dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Wprowadzono dwukropek cudzysłów przecinek polecenie zamknij nawias okrągły. Linia 10. zamknij nawias ostrokątny test. Linia 11. Wprowadzono dwukropek test. Linia 12. zamknij nawias ostrokątny inny. Linia 13. Wprowadzono dwukropek inny. Linia 14. zamknij nawias ostrokątny quit.
Polecenie 1

Zapoznaj się z filmem przedstawiającym grę w zgadywanie, czy ustawioną wartością jest orzeł czy reszka. Czy potrafisz wskazać inne gry, w którym można wykorzystać pętle warunkowe?

Rwh5e8Bcj9aWE
Lekcja poświęcona pętlom warunkowym w języku Python.

Instrukcja else w pętli while

Opcjonalnym elementem pętli while jest blok else. Wykonywany jest zawsze, jeśli warunek nie jest spełniony lub przestanie być spełniony.

Linia 1. lista podkreślnik t znak równości otwórz nawias kwadratowy apostrof Dura apostrof przecinek apostrof lex apostrof przecinek apostrof sed lex apostrof zamknij nawias kwadratowy. Linia 2. while lista podkreślnik t dwukropek. Linia 3. element znak równości lista podkreślnik t otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 4. del otwórz nawias okrągły lista podkreślnik t otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 5. print otwórz nawias okrągły element przecinek end znak równości apostrof apostrof zamknij nawias okrągły. Linia 6. else dwukropek. Linia 7. print otwórz nawias okrągły apostrof kreska pionowa koniec kropka apostrof zamknij nawias okrągły. Linia 8. print otwórz nawias okrągły apostrof Tu pusta lista apostrof przecinek lista podkreślnik t zamknij nawias okrągły.

Słownik

del()
del()

funkcja kasująca nieodwracalnie obiekt, usuwająca go z pamięci operacyjnej