Pętla for (żółwik) + zadania

Pętla for (żółwik) + zadania

Pętla for

  • Wykonuje blok kodu określoną ilość razy
  • Pozwala przemieszczać się po elementach jakieś sekwencji
Schemat użycia pętli
for litery in "Słowo":
  print(litery)

for elementy in ["a","b","c"]:
  print(elementy)

przykłady użycia

Dobre nawyki - jeżeli nie będziemy w pętli korzystać z "elementu" to używamy znaku podłogi _

Pętla for - użycie ze słownikiem

moj_slownik = {"a": 1, "b": 2, "c": 3}
for klucz in moj_slownik:
    print(klucz)

wyświetla klucze słownika

moj_slownik = {"a": 1, "b": 2, "c": 3}
for klucz in moj_slownik:
    print(moj_slownik[klucz])

wyświetla wartość kluczy

moj_slownik = {"a": 1, "b": 2, "c": 3}
for klucz,wartosc in moj_slownik.items():
    print("Kluczem jest: ", klucz)
    print("Wartość jest: ", wartosc)

rozdziela i wyświetla klucze i wartość

Funkcja range

Ta funkcja generuje sekwencje na podstawie podanych przez nas danych. Podanie końca jest obowiązkowe.

range(start, koniec, krok)

for _ in range(5):
  print("Hej!")

przykład użycia

for i in range(100, 0, -1):
    print(i)

odlicza w dół

Import bibliotek

import nazwa_biblioteki

Aktywacja zewnętrznej biblioteki

Biblioteki są przydatne, ale trzeba z nimi uważać, jeżeli możesz wykonać kod samemu zrób to.

Dobra praktyka - import zawsze na początku kodu

Jeśli potrzebujemy jakiejś zewnętrznej (np. znalezionej na www.pypi.org ) możemy ją zainstalować poprzez wykonanie w terminalu:

pip install nazwa_bibilioteki

Moduł Turtle

Służy to rysowania za pomocą kodu. Zawsze na początku trzeba zaimportować go poprzez:

import turtle

Przygotowywanie żółwika

Początek kodu

zolwik =  turtle.Turtle

tworzy żółwika i jego przestrzeń

zolwik.speed(5)

określamy z jaką prędkością porusza się żółwik

zolwik.shape("turtle")

Metody

.forward(odległość) - przesuwa żółwia do przodu
.left(kąt) - żółwik skręca w lewo o podany kąt
.right(kąt) - skręca w prawo o podany kąt
.circle(promień) - rysuje okrąg o podanym promieniu
.penup() - żółwik przemieszczając się przestanie zostawiać ślad
.pendown() - ponownie zacznie rysować

Koniec kodu

zolwik.hideturtle()

chowa żółwia

turtle.exitonclick()

powoduje, że bo skończeniu rysowania program od razu się nie zamyka

Dodatek

end=" " - zamienia enter na to co jest podane w " "

for i in range(5):
    print(i, end=", ")

przykład użycia

Zamiast wyświetlać każdą liczbę od nowej lini, wyświetli je po przecinku.

Zadanie 1

Przykład a

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")
# powyzej nie modyfikuj

dlugosc=0
szerokosc=50

for _ in range(4):
    dlugosc+=50
    zolwik.forward(50)
    for _ in range(2):
        zolwik.left(90)
        zolwik.forward(dlugosc)
        zolwik.left(90)
        zolwik.forward(szerokosc)
  

#ponizej nie modyfikuj
zolwik.hideturtle()
turtle.exitonclick()

Przykład b

import turtle

zolwik = turtle.Turtle()
zolwik.speed(1)
zolwik.shape("turtle")
# powyzej nie modyfikuj

dlugosc=50

for _ in range(8):
    dlugosc+=25
    for _ in range(4):
        zolwik.forward(dlugosc)
        zolwik.left(90)
    

#ponizej nie modyfikuj
zolwik.hideturtle()
turtle.exitonclick()

Zadanie 2

Korzystając z pętli for wyciągnijcie wpisy z czerwca zawierające komunikat “ERROR” (oba warunki muszą być spełnione!).

logi = [
["[2025-03-25T10:41:50] [WARN] Ciepło tutaj..."],
["[2025-03-25T11:58:50] [INFO] Cośtam liczę."],
["[2025-04-25T20:18:51] [INFO] Zadanie wykonane."],
["[2025-05-25T21:12:52] [ERROR] Bzzzztttt... dzielisz przez zero."],
["[2025-05-25T22:48:50] [INFO] Plik przetworzony."],
["[2025-06-25T01:48:50] [INFO] Połączona z serwisem www."],
["[2025-06-25T05:48:22] [ERROR] Booom... i wybuchło..."],
["[2025-06-25T15:48:31] [WARN] Miejsce na dysku się kończy."],
["[2025-07-25T20:48:50] [ERROR] Zły format pliku."],
["[2025-07-25T21:48:32] [INFO] Przesyłka gotowa."],
["[2025-07-25T22:21:50] [INFO] Program ściągnięty."],
["[2025-07-25T25:48:50] [INFO] A ja liczę i liczę...."],
]

z polecenia zadania

for lista in logi:
    for linia in lista:
        wyrazy=linia.split()
        data=wyrazy[0]
        miesiac=data.split("-")
        if miesiac[1]=="06" and wyrazy[1]=="[ERROR]":
            print(linia)

opcja 1

for linia in logi:
    for wyraz in linia:
        if "[ERROR]" in wyraz and "[2025-06" in wyraz:
            print(linia)

opcja 2

Zadanie 3

Jak dodatkowe zadanie dla chętnych - spróbujcie napisać aplikację liczącą ciąg Fibonacciego startując od 0 i dając użytkownikowi możliwość wpisania maksymalnej wartości dla pozycji ciągu.
https://en.wikipedia.org/wiki/Fibonacci_sequence

zakres = int(input("Podaj maksymalną wartość dla ciągu Fibonacciego: "))

a=0
b=1
while b<zakres:
    wynik=a+b
    a=b
    b=wynik
    if wynik<zakres:
        print(wynik)