🐍Python🐍 - zajęcia 5 + ćwiczenia

🐍Python🐍 - zajęcia 5 + ćwiczenia
Photo by David Clode / Unsplash

gotowe moduły * moduł Turtle🐢 * pętle * FOR * WHILE

Gotowe moduły:

  • Biblioteki gotowych modułów: np. pypi.org
  • Instalacja i dodawanie - dobra praktyka ułatwiająca korzystanie z aplikacji - kod dotyczący instalacji biblioteki dodajemy na początku pliku: import nazwa_biblioteki lub gdy biblioteka nie jest zainstalowana piszemy w terminalu - pip install nazwa_biblioteki
  • przykład modułu wbudowanego: random - moduł losowości
    • np. random.shuffle(moja_lista) - przetasuje elementy listy

UWAGA 1! Zewnętrzna biblioteka nie może być w tym samym folderze co biblioteka random

UWAGA2! Plik z kodem nie może mieć takiej samej nazwy jak nazwa biblioteki z której korzystamy

D.R.Y.

  • Don't Repeat Yourself
  • to dobra praktyka, kod powinien być maksymalnie intuicyjny i krótki

Tip:

end=" " - kiedy np wypisujemy elementy listy, ten fragment w poleceniu print wypisuje wszystkie elementy w jednej linii oddzielone przy pomocy ", ".

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

✅ Pętla for

  • Używana, gdy wiemy ile razy coś ma się powtórzyć (np. po elementach listy, po zakresie liczb).
  • składnia: for zmienna in kolekcja:

✅ Pętla while

  • Używana, gdy nie wiemy z góry, ile razy coś ma się powtórzyć – działa, dopóki warunek jest True.
  • składnia: while warunek:

Zastosowanie pętli

  • podaj klucze słownika
moj_slownik = {"a": 1, "b": 2, "c": 3}
for klucz in moj_slownik:
    print(klucz)

  • podaj wartości przypisane do kluczy
moj_slownik = {"a": 1, "b": 2, "c": 3}
for wartosc in moj_slownik:
    print(moj_slownik[wartosc])
    • inne sposoby
# 1 # ITEMS
 moj_slownik = {"a": 1, "b": 2, "c": 3}

 for klucz, wartosc in moj_slownik.items():
     print(wartosc)

# 2 # ITEMS

 moj_slownik = {"a": 1, "b": 2, "c": 3}
 for klucz in moj_slownik.items():
     print("kluczem jest:", klucz)
     print("Wartoscia jest:", wartosc)

🐢Moduł Turtle

📌 Co to jest turtle?

    • turtle to wbudowany moduł graficzny w Pythonie.
    • Pozwala rysować figury i wzory za pomocą „żółwia” poruszającego się po ekranie.
    • Świetny do nauki programowania i grafiki wektorowej.
    • Żółw rysuje jakby „ciągnął piórko”.
    • turtle powstał na bazie idei z języka Logo, stworzonego do nauki dzieci.

📌Wykorzystanie

  • uruchamianie i utworzenie żółwia
import turtle
zolwik = turtle.Turtle()
  • zakończenie pracy żółwia:
zolwik.hideturtle()
turtle.exitonclick()
  • ustawienia wyświetlania:
    • kolor i rozmiar okna:
sc = turtle.Screen()
sc.setup(width=600, height=400)  # Window size: 600x400 pixels
sc.bgcolor("pink")
    • kolor pióra: zolwik.pencolor("white")
    • rozmiar pióra: zolwik.pensize(5)
    • zdjęcie (umieścić je w folderze na którym pracujemy, alternatywa koloru tła):
sc.bgpic("wezyk.gif")  # Ustawienie zdjęcia na tło 
    • inne ustawienia stylu
Komenda Co robi
pencolor("red") Zmienia kolor rysowania
fillcolor("blue") Kolor wypełnienia figury
pensize(3) Grubość linii
begin_fill() / end_fill() Wypełnienie rysowanej figury
speed(1-10/'fastest') Ustawia prędkość żółwia
hideturtle() / showturtle() Ukrywa lub pokazuje żółwia
  • by okno nie zamknęło się od razu po zakończeniu rysowania wpisujemy: turtle.done()
  • najważniejsze komendy:
Komenda Działanie
forward(x) / fd(x) Idź do przodu o x pikseli
backward(x) / bk(x) Idź do tyłu o x pikseli
right(kąt) / rt(kąt) Obrót w prawo o kąt stopni
left(kąt) / lt(kąt) Obrót w lewo o kąt stopni
penup() Podnieś pisak (nie rysuje)
pendown() Opuść pisak (rysuje znowu)
goto(x, y) Przejdź do współrzędnych (x, y)
circle(r) Rysuje okrąg o promieniu r
setheading(kąt) Obraca żółwia w konkretnym kierunku
clear() Czyści ekran
reset() Czyści i resetuje pozycję żółwia

🐍Zadanie

1a. Schody

Polecenie: Odtwórz wzór:

Kod:

import turtle

######## początkowe ustawienia ########

zolwik = turtle.Turtle()
zolwik.speed(5)
zolwik.shape("turtle")
zolwik.pensize(5)
zolwik.pencolor("white")

sc = turtle.Screen() #ustawienie okna wyswietlania
sc.setup(width=600, height=1000)  # rozmiar okna 600x1000 pikseli
sc.bgpic("wezyk.gif")  # Ustawienie zdjęcia na tło 
    
######## schody ########

bok = 50
kat = 90 # kąt skrętu 
liczba_schodow = 4
liczba_podpor = 3

# Podstawa schodów
for h in range(2):       
    zolwik.forward(bok*liczba_schodow)
    zolwik.left(kat)

#Rysowanie schodków
for i in range(liczba_schodow):
    zolwik.forward(bok)                 
    zolwik.left(kat)
    zolwik.forward(bok)
    zolwik.right(kat)

zolwik.back(bok)     #cofamy zolwika
zolwik.left(kat*2)   #odwracamy zolwika

#Rysowanie podpór

for j in range(liczba_podpor):

    wysokosc = bok + j * bok            # chcemy żeby słupek był coraz większy, dlatego powiększamy go za kazdym razem o dlugosc najkrotszego boku
    zolwik.left(kat)                    # obracamy się do rysowania slupka
    zolwik.forward(wysokosc)            # rysujemy slupek
    zolwik.right(kat*2)                 # obracamy się do zawracania
    zolwik.forward(wysokosc)            # wracamy po slupku
    zolwik.left(kat)                    # obracamy się do przejścia do innego slupka
    zolwik.forward(bok)                 # przechodzimy do innego slupka


########

zolwik.hideturtle()
turtle.exitonclick()

Wynik:

1b. Pętla kwadratów

Polecenie: Odtwórz wzór:

Kod:

import turtle


zolwik = turtle.Turtle()
zolwik.speed(2)
zolwik.shape("turtle")  #kształt ikony 
zolwik.pensize(5)
zolwik.pencolor("white")

sc = turtle.Screen() #ustawienie okna wyswietlania
sc.setup(width=1500, height=1000)  # rozmiar okna 800x1000 pikseli
sc.bgcolor("green")  # Ustawione tło 
###################### pętla kwadratów ########################

bok = 50
kat = 90 
liczba_kwadratow = 8

for j in range(liczba_kwadratow):
    for i in range(4):
        zolwik.forward(bok + j*bok)
        zolwik.left(kat)
    
########

zolwik.hideturtle()
turtle.exitonclick()

Odpowiedź:

2.Logi

Polecenie: Wcielcie się w rolę osoby zajmującej się administracją IT. Dostałyście zgłoszenie, że w czerwcu był jakiś problem z aplikacją działającą na serwerze. Zgrałyście z niego logi. Macie je teraz dostępne w postaci listy w Pythonie w następującej postaci:

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ę...."],
]

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

Kod:

for wpis in logi:
    tekst = wpis[0]
    czesci = tekst.split("] ")      # szukamy nawiasów ze spacją i dzielimy tekst logów
    if len(czesci) == 3:            # kontrola poprawności danych (czy tekst prawidłowo się podzielił)
        data = czesci[0].strip("[]")
        komunikat = czesci[1].strip("[]")
        wiadomosc = czesci[2]

        # Sprawdzamy, czy komunikat to ERROR
        if komunikat == "ERROR" and data.startswith("2025-06"):
            print(wpis)

3.ciąg Fibonacciego

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