Python - zajęcia 5
- Pętle
- Biblioteki

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


pytanie → treść pytania
odpowiedzi → lista ktotek [(’tresć odpowiedzi’, punkty)]
Zadania
▶️ 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)
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")
```

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)
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)
