Python - zajęcia 6
1) Pętla While
Wydaje polecenie "wykonuj tak długo aż". Pętla ta wykonuje się tak długo jak jakiś warunek jest spełniony.

i = 0
while i < 10:
print(i)
i += 1
Ten kod drukuje liczby od 0
do 9
.
2) Pętla while - Schemat działania

Diagram pokazuje logikę działania pętli while
. Tak długo, jak warunek A
zwraca prawdę, wykonuj B
.
- Start → Przejdź do warunku
A
. - Sprawdzenie warunku:
- Jeśli warunek
A
jestTrue
, przejdź do blokuB
. - Jeśli warunek
A
jestFalse
, zakończ pętlę.
- Jeśli warunek
- Wykonanie bloku
B
→ Wracamy do warunkuA
i sprawdzamy ponownie.
3) Wychodzenie z pętli
Czasami chcemy wyjść z pętli wcześniej. Przydaje się do tego polecenie break
.
i = 100
while True:
print(i)
if i == 0:
break
i -= 1
Warunek w pętli powyżej zawsze jest spełniony (ustawiliśmy go na True
), ale i tak wyjdziemy z pętli przy 0
.
- Przy każdym "obrocie" sprawdzamy
if
-em, czy mamy0
. - Jeśli nie, zmniejszamy
i
o1
. - Jeśli mamy
0
, to uruchamia się linijka zbreak
i wychodzimy z pętli.
UWAGA! Można przerwać też wciskając ctrl + c.
4) Klasy
┌─────────────────────────────┐
│ moduł / biblioteka turtle │
└─────────────────────────────┘
/ \
/ \
┌─────────────────┐ ┌────────────────┐
│ nowe typy │ │ różne funkcje │
│ (klasy obiektów)│ │ np. │
│ - Turtle │ │ - exitonclick │
└─────────────────┘ └────────────────┘
│
│
↓
┌─────────────────────────────────────────────┐
│ klasa Turtle dostarcza metody dla tego │
│ obiektu │
└─────────────────────────────────────────────┘
5) Rysowanie pajęczyny
import turtle
import random
kolory = [
"CornflowerBlue",
"DarkOrchid",
"IndianRed",
"DeepSkyBlue",
"LightSeaGreen",
"wheat",
"SlateGray",
"SeaGreen"
]
zolwik = turtle.Turtle()
zolwik.speed(3)
zolwik.shape("turtle")
zolwik.pensize(2)
for i in range(6, 600, 2):
# zolwik.pencolor(random.choice(kolory)) # Opcjonalna zmiana koloru
zolwik.forward(i)
zolwik.left(59.5)
zolwik.hideturtle()
turtle.exitonclick()
import turtle
zolwik = turtle.Turtle()
zolwik.speed(3)
zolwik.shape("turtle")
zolwik.pensize(2)
for dlugosc_boku in range(6, 600, 2):
zolwik.forward(dlugosc_boku)
zolwik.left(59.5)
turtle.exitonclick()
6) Przykłady pętli While dla rysunków z poprzednich zajęć i inne
x = 0
while True:
x = x + 1
print(x)
Kod jest teraz aktywną pętlą while
, która zwiększa wartość x
o 1 w nieskończoność, wypisując kolejne wartości x
.
a) rysunek
import turtle
zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")
for _ in range(4):
zolwik.forward(80)
zolwik.right(90)
turtle.exitonclick()
A teraz to samo ale z pętlą while:
import turtle
zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")
i = 0
while i < 4
zolwik.forward(80)
zolwik.right(90)
i += 1
turtle.exitonclick()
b) rysunek kwiatu z kółek
import turtle
zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")
i = 0
while i < 6:
zolwik.circle(60)
zolwik.left(60)
i += 1
turtle.exitonclick()
c) rysunek kwiatu z kółek ale z parametrem
import turtle
zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")
i = 0
ilosc_kolek = 10
kat = 360 / ilosc_kolek
while i < ilosc_kolek:
zolwik.circle(60)
zolwik.left(kat)
i += 1
turtle.exitonclick()
d) przykład z Kahoota 1
n = 5
while n:
n -= 1
print(n, end=" ")
Wynik: 4 3 2 1 0
Kod zaczyna z wartością n = 5
. W pętli while n
:
- Wartość
n
jest zmniejszana o 1 przy każdym obiegu (n = n - 1
). - Aktualna wartość
n
jest wyświetlana, a argumentend=" "
powoduje, że liczby są wyświetlane w jednym wierszu, oddzielone spacją.
Pętla kończy się, gdy n
osiągnie 0
, ponieważ while n
działa tylko wtedy, gdy n
jest różne od zera (0 traktowane jest jak false).
e) przykład z Kahoota 2
i = 9
while i >= 9:
print("Hej!")
i -= 1
if i == 8:
break
Wynik:
Hej!
Zmienna i
zaczyna się od wartości 9
. Pętla while
uruchomi się, ponieważ i>=9
. Wewnątrz pętli:
- Najpierw zostanie wyświetlony tekst
"Hej!"
. - Następnie
i
jest zmniejszane o 1, więci
przyjmuje wartość8
. - Warunek
if i == 8
jest spełniony, więc wykonana zostaje instrukcjabreak
, która przerywa pętlę.
W wyniku tego pętla kończy swoje działanie po pierwszym wykonaniu, a kod wyświetla jednorazowo "Hej!"
.
f) przykład z Kahoota 3
i = 9
while i >= 9:
print("Hej!")
i -= 1
if i == 8:
break
Wynik:
Hej!
7) Błądzenie losowe
Prosta symulacja. Zakładamy, że jakiś obiekt przemieszcza się z jednego miejsca w drugie, w sposób losowy. Metoda wykorzystywana do np. sprawdzania ruchu molekuł w gazie, zmian cen na giełdzie, przemieszczania się zwierząt itd.
Możemy wykonać to zadanie za pomocą żółwia. Aby ułatwić sobie zadanie, przyjmijmy, że żółwik może skręcać tylko o 90 stopni, a ślad żółwia też losowo zmienia kolor.
Kolory do Pythona: https://cs111.wellesley.edu/labs/lab02/colors
import random
import turtle
# random walk to po polsku błądzenie losowe
# https://pl.wikipedia.org/wiki/B%C5%82%C4%85dzenie_losowe
screen = turtle.Screen()
screen.setup(1600, 960)
zolwik = turtle.Turtle()
zolwik.shape("turtle")
zolwik.pensize(5)
zolwik.speed(9)
kolory = [
"CornflowerBlue",
"DarkOrchid",
"IndianRed",
"DeepSkyBlue",
"LightSeaGreen",
"wheat",
"SlateGray",
"SeaGreen"
]
katy = [0, 90, 180, 270]
while True:
zolwik.color(random.choice(kolory))
zolwik.left(random.choice(katy))
zolwik.forward(30)
8) Ciąg fibonacciego
Kolejna liczba będzie sumą dwóch poprzednich.

fibonacci = [0, 1]
gorna_granica = 89
while True:
kolejna_liczba = fibonacci[-1] + fibonacci[-2]
if kolejna_liczba > gorna_granica:
break
fibonacci.append(kolejna_liczba)
print(fibonacci)
Wynik:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]