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 += 1Ten 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
AjestTrue, przejdź do blokuB. - Jeśli warunek
AjestFalse, zakończ pętlę.
- Jeśli warunek
- Wykonanie bloku
B→ Wracamy do warunkuAi 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 -= 1Warunek 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
io1. - Jeśli mamy
0, to uruchamia się linijka zbreaki 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 0Kod zaczyna z wartością n = 5. W pętli while n:
- Wartość
njest zmniejszana o 1 przy każdym obiegu (n = n - 1). - Aktualna wartość
njest 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
ijest zmniejszane o 1, więciprzyjmuje wartość8. - Warunek
if i == 8jest 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]