Technikum Klasa I 45 minut PP: II.1 | s. 343

Lekcja 20: Petla while - zastosowania, petla nieskonczona

Petla warunkowa, break, continue, petla z wartownikiem

📋 Podstawa programowa: II.1
Pythonbreakcontinuepetla while
00:00
Wprowadzenie
5 min
00:05
Teoria
15 min
00:20
Cwiczenia
20 min
00:40
Podsumowanie
5 min
📚

Teoria

Czym jest petla while?

Petla while powtarza blok kodu tak dlugo, jak dlugo warunek jest prawdziwy. Uzywamy jej, gdy nie wiemy z gory, ile razy trzeba powtorzyc operacje.

Uwaga na petle nieskonczone! Jesli warunek petli while nigdy nie stanie sie falszywy, program bedzie dzialal w nieskonczonosc. Aby przerwac taki program, uzyj Ctrl + C.

Podstawowa skladnia while

# Odliczanie
licznik = 10
while licznik > 0:
    print(licznik)
    licznik -= 1
print("Start!")

Petla z wartownikiem

Czesty wzorzec - petla dziala, az uzytkownik wpisze wartosc "stop":

tekst = ""
while tekst != "koniec":
    tekst = input("Wpisz cos (lub 'koniec'): ")
    if tekst != "koniec":
        print(f"Wpisales: {tekst}")
print("Zakonczono.")

Instrukcja break

break natychmiast konczy petle, niezaleznie od warunku:

while True:  # petla nieskonczona
    odpowiedz = input("Podaj liczbe (lub 'q' aby zakonczyc): ")
    if odpowiedz == "q":
        break
    liczba = int(odpowiedz)
    print(f"Kwadrat: {liczba ** 2}")

Instrukcja continue

continue pomija reszte biezacej iteracji i przechodzi do nastepnej:

for i in range(1, 11):
    if i % 3 == 0:
        continue  # pomin wielokrotnosci 3
    print(i)  # wypisze: 1, 2, 4, 5, 7, 8, 10

Petla while z else

Blok else wykonuje sie, gdy warunek petli staje sie falszywy (ale NIE gdy uzyjemy break):

n = 7
i = 2
while i < n:
    if n % i == 0:
        print(f"{n} nie jest liczba pierwsza (dzielnik: {i})")
        break
    i += 1
else:
    print(f"{n} jest liczba pierwsza!")

Porownanie for vs while

  • for - gdy znamy liczbe iteracji lub iterujemy po kolekcji
  • while - gdy warunek zakonczenia zalezy od logiki programu
  • Kazda petla for moze byc zapisana jako while (ale nie na odwrot w prosty sposob)
✏️

Zadania

Latwe

Zadanie 1: Zgadywanka liczbowa

Napisz program, ktory losuje liczbe od 1 do 100 (random.randint(1, 100)). Uzytkownik zgaduje - program podpowiada "za duzo" lub "za malo". Gra trwa az do odgadniecia. Wyswietl liczbe prob.

Pokaz przykladowe rozwiazanie
import random

sekret = random.randint(1, 100)
proby = 0

print("Zgadnij liczbe od 1 do 100!")
while True:
    strzal = int(input("Twoj strzal: "))
    proby += 1

    if strzal < sekret:
        print("Za malo!")
    elif strzal > sekret:
        print("Za duzo!")
    else:
        print(f"Brawo! Odgadles w {proby} probach!")
        break
Latwe

Zadanie 2: Suma do progu

Napisz program, ktory wczytuje kolejne liczby od uzytkownika i sumuje je. Program konczy sie, gdy suma przekroczy 100. Wyswietl koncowa sume i liczbe wczytanych liczb.

Pokaz przykladowe rozwiazanie
suma = 0
ile = 0

while suma <= 100:
    liczba = float(input("Podaj liczbe: "))
    suma += liczba
    ile += 1

print(f"Suma: {suma}")
print(f"Wczytano {ile} liczb.")
Srednie

Zadanie 3: Walidacja hasla

Napisz program, ktory wymaga od uzytkownika podania hasla spelniajacego warunki: min. 8 znakow, zawiera cyfre, zawiera wielka litere. Program powtarza prosbe, az haslo bedzie poprawne.

Pokaz przykladowe rozwiazanie
while True:
    haslo = input("Podaj haslo: ")

    if len(haslo) < 8:
        print("Haslo musi miec min. 8 znakow!")
        continue

    ma_cyfre = False
    ma_wielka = False
    for znak in haslo:
        if znak.isdigit():
            ma_cyfre = True
        if znak.isupper():
            ma_wielka = True

    if not ma_cyfre:
        print("Haslo musi zawierac cyfre!")
    elif not ma_wielka:
        print("Haslo musi zawierac wielka litere!")
    else:
        print("Haslo zaakceptowane!")
        break
Trudne

Zadanie 4: Ciag Collatza

Napisz program obliczajacy ciag Collatza: wczytaj liczbe n. Jesli n jest parzyste - podziel przez 2, jesli nieparzyste - pomnoz przez 3 i dodaj 1. Powtarzaj az n = 1. Wyswietl caly ciag i liczbe krokow.

Pokaz przykladowe rozwiazanie
n = int(input("Podaj liczbe poczatkowa: "))
kroki = 0

print(n, end=" ")
while n != 1:
    if n % 2 == 0:
        n = n // 2
    else:
        n = 3 * n + 1
    print(f"-> {n}", end=" ")
    kroki += 1

print(f"\nLiczba krokow: {kroki}")
🎥

Materialy wideo

Kurs C++ 10: Petla While i Do...While
Kursy Programowania
Kurs Java - pętla While, pętla For, Metody, Tablice
Akademia Kodu
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 19: Petla for Lekcja 21: Funkcje z parametrami i bez →