Python - zajęcia 5

Python - zajęcia 5

  • Pętle
  • Biblioteki

The AI workspace that works for you. | Notion
A tool that connects everyday work into one space. It gives you and your teams AI tools—search, writing, note-taking—inside an all-in-one, flexible workspace.
💭
Typ danych do kwestionariusza

Do kwestionariusza wybraliśmy następującą strukturę:

image.png
image.png

pytanie → treść pytania

odpowiedzi → lista ktotek [(’tresć odpowiedzi’, punkty)]

Zadania


✏️
Zadanie 1

▶️ Słupki

# słupki (podwojona wysokość)
basic_dlugosc = 30
zolwik.left(90)

for i in range(1, 5):
    zolwik.forward(basic_dlugosc*i)
    zolwik.right(90)
    zolwik.forward(basic_dlugosc)
    zolwik.right(90)
    zolwik.forward(basic_dlugosc*i)
    zolwik.right(180)

zolwik.left(90)
zolwik.forward(basic_dlugosc*4)

▶️ Kwadraty

# 8 kwadratów
basic_dlugosc_boku = 30
powiekszenie = 10
ilosc = 8


def kwadrat(bok):
    for _ in range(4):
        zolwik.forward(bok)
        zolwik.left(90)


for ilosc in range(1, 9):
    kwadrat(basic_dlugosc_boku+ilosc*powiekszenie)

▶️ Plus

basic_dlugosc_boku = 30
for e in range(4):
    for _ in range(3):
        zolwik.forward(basic_dlugosc_boku)
        zolwik.right(90)
    zolwik.right(180)
✏️
Zadanie 2

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 (później nauczymy się wczytywać dane z plików) 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!).

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ę...."],
]
print("\nLogi błędów z czerwca\n*********************")
for wpis in logi:
    for elem in wpis:
        if "ERROR" in elem and "-06-" in elem:
            print("\n", elem, "\n")
            ```
✏️
Zadanie 3

Quiz i zabawy z nim:


# --> wyciągnięcie pytania
print(quiz[0]["pytanie"])

# --> wyciągnięcie prawidłowej odpowiedzi do pytania
print(f"Prawidłowa odpowiedź na pytanie:\n{quiz[0]["pytanie"]}\n to:")
for tresc_odpowiedzi, czy_poprawna in quiz[0]["odpowiedzi"]:
    if czy_poprawna == 1:
        print(tresc_odpowiedzi)

# --> wyciągnięcie prawidłowej odpowiedzi do pytania
print(f"Prawidłowa odpowiedź na pytanie:\n{quiz[0]["pytanie"]}\n to:")
for tresc_odpowiedzi, czy_poprawna in quiz[0]["odpowiedzi"]:
    if czy_poprawna == 1:
        print(f"{tresc_odpowiedzi}\n(ilość punktów do zdobycia: {czy_poprawna})")

# --> Wyświetl pytania w pętli
prefix = ["a. ", "b. ", "c. "]
for numer in range(4):
    print(quiz[numer]["pytanie"])
    for i, (tresc_odpowiedzi, punktacja) in enumerate(quiz[numer]["odpowiedzi"]):
        print(prefix[i], tresc_odpowiedzi)

# --> Wyświetl pytania w pętli + oznacz prawidłową
prefix = ["a. ", "b. ", "c. "]
for numer in range(4):
    print(quiz[numer]["pytanie"])
    for i, (tresc_odpowiedzi, punktacja) in enumerate(quiz[numer]["odpowiedzi"]):
        if punktacja == 1:
            oznaczenie = " ✅"
        else:
            oznaczenie = ""
        print(prefix[i], tresc_odpowiedzi, oznaczenie)


# --> Wyświetl pytania losowo w pętli

ilosc_pytan = 4
lista = list()
for i in range(ilosc_pytan):
    lista.append(i)

# print(random.choice(lista))
prefix = ["a. ", "b. ", "c. "]

for _ in range(ilosc_pytan):
    numer = random.choice(lista) # muszę wprowadzić zmienną by dopasować pytanie i odpowiedzi xD
    print(quiz[numer]["pytanie"])
    for i, (tresc_odpowiedzi, punktacja) in enumerate(quiz[numer]["odpowiedzi"]):
        if punktacja == 1:
            oznaczenie = " ✅"
        else:
            oznaczenie = ""
        print(prefix[i], tresc_odpowiedzi, oznaczenie)


# --> Wyświetl pytania , a następnie odpowiedxi losowo w pętli

ilosc_pytan = 4
prefix = ["a. ", "b. ", "c. "]

for numer_pytania in range(ilosc_pytan):
    print(f"{numer_pytania + 1}. {quiz[numer_pytania]["pytanie"]}")
    # --> kopiuję aby pomieszać kolejność i nie ingerować w oryginał
    pomieszane_odpowiedzi = quiz[numer_pytania]["odpowiedzi"][:]
    random.shuffle(pomieszane_odpowiedzi)
    for i, (tresc_odpowiedzi, punktacja) in enumerate(pomieszane_odpowiedzi):
        if punktacja == 1:
            oznaczenie = " ✅"
        else:
            oznaczenie = ""
        print(prefix[i], tresc_odpowiedzi, oznaczenie)

✏️
Zadanie 4

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.

# Ciąg fibonacciego
wartosc_max = int(input(
    "Wpisz liczbę jakiej nie ma przekrooczyć ostatnia liczba ciągu:"))
ciag = list()
ciag = [0, 1]
suma = 0
while suma < wartosc_max:
    suma = ciag[-1] + ciag[-2]
    if suma < wartosc_max:
        ciag.append(suma)
print(ciag)