10. Python – pętle


Pętle (iteracje) to instrukcje pozwalające wielokrotnie powtarzać fragment kodu. Zamiast pisać ten sam kod setki razy, używamy pętli, która wykona go automatycznie tyle razy, ile potrzeba.

Dwa rodzaje pętli w Pythonie:

  • for – gdy wiesz ile razy chcesz powtórzyć kod (iteracja po kolekcji)
  • while – gdy powtarzasz dopóki warunek jest prawdziwy

Pętla for…

for element in kolekcja:
    # kod do wykonania dla każdego elementu

Jak to działa:

  • Python przechodzi przez każdy element kolekcji
  • W każdej iteracji element jest przypisywany do zmiennej
  • Wykonywany jest kod w bloku (z wcięciem)

Funkcja range()

Funkcja range() generuje sekwencję liczb – często używana z pętlą for.

range(stop) – od 0 do stop-1

# Liczby od 0 do 9
for i in range(10):
    print(i, end=", ")
# Wynik: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

range(start, stop) – od start do stop-1

# Liczby od 5 do 9
for i in range(5, 10):
    print(i, end=", ")
# Wynik: 5, 6, 7, 8, 9,

range(start, stop, step) – z krokiem

# Liczby nieparzyste od 1 do 10
for i in range(1, 11, 2):
    print(i, end=", ")
# Wynik: 1, 3, 5, 7, 9,

# Liczby parzyste
for i in range(0, 11, 2):
    print(i, end=", ")
# Wynik: 0, 2, 4, 6, 8, 10,

range() z ujemnym krokiem

# Odliczanie w dół
for i in range(10, 0, -1):
    print(i, end=", ")
# Wynik: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,

Pętla for z listami

Iteracja po elementach

lista = ["element1", 10, 22.4, [1, 2, 3]]

for element in lista:
    print("Element listy:", element)

Wynik:

Element listy: element1
Element listy: 10
Element listy: 22.4
Element listy: [1, 2, 3]

Iteracja z indeksem

owoce = ["jabłko", "banan", "gruszka"]

# Metoda 1: enumerate()
for index, owoc in enumerate(owoce):
    print(f"{index}: {owoc}")

# Wynik:
# 0: jabłko
# 1: banan
# 2: gruszka

# Metoda 2: range() z len()
for i in range(len(owoce)):
    print(f"{i}: {owoce[i]}")

Pętla for z krotkami

foods = ('Pizza', 'Burgers', 'Kebab')

for food in foods:
    print("Food is:", food)

Wynik:

Food is: Pizza
Food is: Burgers
Food is: Kebab

Pamiętaj: Krotki są niemutowalne – nie możesz ich zmienić wewnątrz pętli.

Pętla for ze stringami

word = "Python"

for letter in word:
    print(letter)

Wynik:

P
y
t
h
o
n

Przykład – zliczanie liter

text = "Uwielbiam Python!"
licznik_spacji = 0

for znak in text:
    if znak == " ":
        licznik_spacji += 1

print(f"Liczba spacji: {licznik_spacji}")

Pętla for ze słownikami

Iteracja po kluczach

osoba = {
    "name": "Kama",
    "surname": "Kaczmarek",
    "mail": "kamakaczmarek@zse-zdwola.pl"
}

# Domyślnie iteracja po kluczach
for key in osoba:
    print(key)

# Lub jawnie
for key in osoba.keys():
    print(key)

Wynik

name
surname
mail

Iteracja po wartościach

osoba = {
    "name": "Kama",
    "surname": "Kaczmarek",
    "mail": "kamakaczmarek@zse-zdwola.pl"
}

for value in osoba.values():
    print(value)

Wynik

Kama
Kaczmarek
kamakaczmarek@zse-zdwola.pl

Iteracja po kluczach i wartościach

osoba = {
    "name": "Kama",
    "surname": "Kaczmarek",
    "mail": "kamakaczmarek@zse-zdwola.pl"
}

for key, value in osoba.items():
    print(f"{key}: {value}")

Wynik

name: Kama
surname: Kaczmarek
mail: kamakaczmarek@zse-zdwola.pl

Przykład – filtrowanie słownika

users = {
    "Anna": "active",
    "Jakub": "inactive",
    "Kasia": "inactive",
    "Robert": "active",
}

# Tworzymy nowy słownik tylko z aktywnymi użytkownikami
active_users = {}

for user, status in users.items():
    if status == "active":
        active_users[user] = status

print(active_users)
# {'Anna': 'active', 'Robert': 'active'}

Pętla for z input()

menu = ['Pizza', 'Burger', 'Fish']

for food in menu:
    if food == 'Pizza':
        pizza_type = input("Jaki rodzaj pizzy chcesz? ")
        size = input("Jaki rozmiar? ")
        print(f"Zamówiłeś {size} pizzę {pizza_type}")
    else:
        print(f"Wybrałeś: {food}")

Zagnieżdżone pętle for

Przykład – tabliczka mnożenia

print("TABLICZKA MNOŻENIA")
print()

for i in range(1, 11):
    for j in range(1, 11):
        wynik = i * j
        print(f"{wynik:4}", end="")  # :4 wyrównuje do 4 znaków
    print()  # Nowa linia po każdym wierszu

Przykład – trójkąt z gwiazdek

# Trójkąt prostokątny
x = 5
for i in range(x):
    print("*" * (i + 1))

Wynik

*
**
***
****
*****

Przykład – trójkąt równoboczny

x = 5

for w in range(x):
    # Spacje
    for s in range(x - w - 1):
        print(" ", end="")
    
    # Gwiazdki
    for g in range(2 * w + 1):
        print("*", end="")
    
    print()  # Nowa linia

Wynik

    *
   ***
  *****
 *******
*********

Przykłady praktyczne z for

Przykład 1: 100 kolejnych liczb

print("Liczby od 3 do 102:")

for i in range(3, 103):
    if i < 102:
        print(i, end=", ")
    else:
        print(i)  # Ostatnia bez przecinka

Przykład 2: Silnia

n = 5
silnia = 1

for i in range(2, n + 1):
    silnia *= i

print(f"{n}! = {silnia}")
# 5! = 120

Przykład 3: Ciąg Fibonacciego

n = 10

if n <= 2:
    print(f"{n} elementem ciągu Fibonacciego jest 1")
else:
    f1 = 0
    f2 = 1
    
    print("Ciąg Fibonacciego:", end=" ")
    print(f1, f2, end=", ")
    
    for i in range(2, n):
        fn = f1 + f2
        print(fn, end=", ")
        f1 = f2
        f2 = fn
    
    print(f"\n{n} elementem ciągu jest {f2}")

Pętle while…

Pętla while wykonuje kod dopóki warunek jest prawdziwy.

Korzystając z pętli while musimy uważać, żeby nie pominąć warunku zatrzymania pętli. Jeżeli tego nie zrobimy, pętla będzie wykonywała się w nieskończoność.

Działanie pętli: dopóki warunek jest spełniony, wykonuj akcję i zwiększ o…

while warunek:
    # kod do wykonania
    # WAŻNE: zmień zmienną by warunek kiedyś był False!

Prosty przykład

i = 0

while i < 10:
    print(i, end=", ")
    i += 1  # WAŻNE - zwiększamy i!

# Wynik: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

Nieskończona pętla (BŁĄD)

# ŹLE - NIESKOŃCZONA PĘTLA!
i = 0
while i < 10:
    print(i)
    # Brak i += 1 - pętla nigdy się nie zatrzyma!

Jak zatrzymać: Ctrl+C (Windows/Linux) lub Cmd+C (Mac)

Przykłady praktyczne z while

Przykład 1: Liczby mniejsze od x

x = 10
licznik = 0

print(f"Liczby całkowite mniejsze od {x}:")

while licznik < x:
    print(licznik)
    licznik += 1

Przykład 2: Napisz skrypt wyznaczający NWD (największy wspólny dzielnik).

a = 48
b = 18

print(f"Szukamy NWD dla {a} i {b}")

while a != b:
    if a > b:
        a -= b
    else:
        b -= a

nwd = a  # lub b - obie zmienne są równe
print(f"NWD = {nwd}")

Przykład 3: Napisz skrypt wyświetlający ciąg Fibonacciego

a, b = 0, 1

print("Ciąg Fibonacciego do 100:")

while a < 100:
    print(a, end=" ")
    a, b = b, a + b

print()

Przykład 4: Zgadywanie liczby

sekret = 42
proba = 0

while proba != sekret:
    proba = int(input("Zgadnij liczbę: "))
    
    if proba < sekret:
        print("Za mało!")
    elif proba > sekret:
        print("Za dużo!")
    else:
        print("Brawo! Zgadłeś!")

Zatrzymywanie pętli i skryptu

Działanie pętli lub skryptu możemy przerwać w dowolnej chwili lub możemy pominąć część instrukcji do wykonania:

  • instrukcja continue; powoduje przeskoczenie do następnego obiegu pętli
  • instrukcja break; powoduje natychmiastowe wyjście z pętli

Przerywanie działania pętli za pomocą instrukcji break;

Przykład z for

for i in range(1, 101):
    print(i)
    
    if i >= 10:
        break

print("Pętla zakończona")

Wynik

1
2
3
4
5
6
7
8
9
10
Pętla zakończona

Przykład z while

i = 0

while True:  # Nieskończona pętla
    print(i)
    i += 1
    
    if i >= 5:
        break  # Wychodzimy z pętli

print("Zakończono")

Praktyczny przykład – wyszukiwanie w liście

liczby = [10, 23, 5, 67, 89, 3, 45]
szukana = 67

for liczba in liczby:
    if liczba == szukana:
        print(f"Znaleziono {szukana}!")
        break
else:
    # else wykonuje się gdy pętla NIE została przerwana przez break
    print(f"Nie znaleziono {szukana}")

Przeskok do następnej iteracji (obiegu pętli) za pomocą instrukcji continue;

Przykład – tylko liczby parzyste

for i in range(1, 11):
    if i % 2 != 0:
        continue  # Pomiń nieparzyste
    
    print(i, end=", ")

# Wynik: 2, 4, 6, 8, 10,

Przykład – pomijanie wartości None

dane = [10, None, 20, None, 30, 40]

for element in dane:
    if element is None:
        continue  # Pomiń None
    
    print(element * 2)

# Wynik:
# 20
# 40
# 60
# 80

Przykład – filtrowanie listy

liczby = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print("Liczby większe od 5:")
for liczba in liczby:
    if liczba <= 5:
        continue
    
    print(liczba, end=" ")

# Wynik: 6 7 8 9 10

List Comprehension – skrócona konstrukcja listy

List comprehension to zwięzły i szybki sposób tworzenia listy na podstawie istniejącej sekwencji (listy, range, string, generatora itp.).

Podstawowa składnia

[nowy_element for element in kolekcja] 

Przykład 1 — Kwadraty liczb

# Tradycyjna metoda
kwadraty = []
for x in range(5):
    kwadraty.append(x * x)

print(kwadraty)  # [0, 1, 4, 9, 16]

# List comprehension
kwadraty = [x * x for x in range(5)]
print(kwadraty)  # [0, 1, 4, 9, 16]

Przykład 2 — z warunkiem (filtrowanie)

# Tylko liczby parzyste
parzyste = [x for x in range(10) if x % 2 == 0]
print(parzyste)  # [0, 2, 4, 6, 8]

# Tylko dodatnie
liczby = [-5, 3, -1, 7, -2, 8]
dodatnie = [x for x in liczby if x > 0]
print(dodatnie)  # [3, 7, 8]

Przykład 3 — z funkcją

# Długości słów
words = ["python", "lista", "comprehension"]
lengths = [len(w) for w in words]
print(lengths)  # [6, 5, 12]

# Wielkie litery
wyrazy = ["ala", "ma", "kota"]
wielkie = [w.upper() for w in wyrazy]
print(wielkie)  # ['ALA', 'MA', 'KOTA']

Przykład 4 — zagnieżdżone pętle

# Pary liczb
pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs)
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

# Tabliczka mnożenia (fragment)
mnozenie = [(x, y, x * y) for x in range(1, 4) for y in range(1, 4)]
print(mnozenie)
# [(1, 1, 1), (1, 2, 2), (1, 3, 3), (2, 1, 2), ...]

Przykład 5: If-else w comprehension

# "parzysta" lub "nieparzysta"
liczby = [1, 2, 3, 4, 5]
opis = ["parzysta" if x % 2 == 0 else "nieparzysta" for x in liczby]
print(opis)
# ['nieparzysta', 'parzysta', 'nieparzysta', 'parzysta', 'nieparzysta']

Dict Comprehension – tworzenie słownika

Dict comprehension działa podobnie jak list comprehension, ale tworzy słownik (dict).

Podstawowa składnia

{klucz: wartosc for element in kolekcja}

Przykład 1 — słownik kwadratów

kwadraty = {x: x * x for x in range(6)}
print(kwadraty)
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Przykład 2 — filtr w dict comprehension

# Tylko parzyste
parzyste_kwadraty = {x: x * x for x in range(10) if x % 2 == 0}
print(parzyste_kwadraty)
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Przykład 3 — odwracanie słownika

original = {"a": 1, "b": 2, "c": 3}
odwrocony = {v: k for k, v in original.items()}
print(odwrocony)
# {1: 'a', 2: 'b', 3: 'c'}

Przykład 4 — Długości słów

words = ["python", "dict", "comprehension"]
lengths = {word: len(word) for word in words}
print(lengths)
# {'python': 6, 'dict': 4, 'comprehension': 12}

Przykład 5 – Lambda

words = ["python", "lambda", "map"]
lengths = {w: (lambda x: len(x))(w) for w in words}
print(lengths)
# {'python': 6, 'lambda': 6, 'map': 3}

Set Comprehension

# Zestaw kwadratów
kwadraty = {x * x for x in range(-5, 6)}
print(kwadraty)
# {0, 1, 4, 9, 16, 25} - duplikaty automatycznie usunięte

Porównanie: pętla vs comprehension

Wydajność

import time

# Pętla tradycyjna
start = time.time()
lista1 = []
for i in range(1000000):
    lista1.append(i * i)
czas1 = time.time() - start

# List comprehension
start = time.time()
lista2 = [i * i for i in range(1000000)]
czas2 = time.time() - start

print(f"Pętla: {czas1:.4f}s")
print(f"Comprehension: {czas2:.4f}s")
# Comprehension jest zazwyczaj szybsze!

 

Zadania do samodzielnego wykonania:

Podstawy pętli for z range()

  1. Wyświetl liczby od 0 do 20 używając pętli for i funkcji range().
  2. Wyświetl liczby od 10 do 20 (włącznie) używając pętli for.
  3. Wyświetl liczby parzyste od 0 do 20 używając pętli for z odpowiednim krokiem w range().
  4. Wyświetl liczby od 20 do 1 (odliczanie w dół) używając pętli for.
  5. Wyświetl co trzecią liczbę z zakresu od 0 do 30 (0, 3, 6, 9…).
  6. Oblicz sumę liczb od 1 do 100 używając pętli for.
  7. Oblicz iloczyn liczb od 1 do 10 używając pętli for.
  8. Wyświetl tabliczkę mnożenia dla liczby 7 (od 7×1 do 7×10).
  9. Policz ile jest liczb podzielnych przez 3 w zakresie od 1 do 50.
  10. Wyświetl wszystkie liczby nieparzyste od 1 do 30 w jednej linii, oddzielone przecinkami.

Pętla for z listami

  1. Stwórz listę 5 swoich ulubionych filmów. Użyj pętli for aby wyświetlić każdy film z numerem (1. Film1, 2. Film2 itd.).
  2. Stwórz listę liczb [2, 4, 6, 8, 10]. Wyświetl każdą liczbę pomnożoną przez 3.
  3. Pobierz od użytkownika 5 imion (w pętli) i zapisz je do listy. Następnie wyświetl wszystkie imiona.
  4. Stwórz listę liczb [10, 20, 30, 40, 50]. Oblicz średnią arytmetyczną tych liczb używając pętli.
  5. Stwórz listę miast [„Warszawa”, „Kraków”, „Gdańsk”]. Wyświetl tylko te miasta, które mają więcej niż 6 liter.
  6. Mając listę [1, 2, 3, 4, 5], stwórz nową listę zawierającą kwadraty tych liczb (używając zwykłej pętli, nie comprehension).
  7. Stwórz listę temperatur w ciągu tygodnia. Policz ile dni temperatura była powyżej 20 stopni.
  8. Mając listę zakupów [„mleko”, „chleb”, „masło”, „jajka”], wyświetl każdy produkt z ceną (ceny wymyśl sam).
  9. Stwórz dwie listy z imionami. Sprawdź które imiona występują w obu listach.
  10. Stwórz listę liczb. Znajdź największą i najmniejszą liczbę używając pętli (bez funkcji max/min).

Pętla for ze stringami

  1. Pobierz od użytkownika zdanie. Policz ile jest w nim liter 'a’ (małych i wielkich).
  2. Pobierz słowo od użytkownika. Wyświetl każdą literę w osobnej linii wraz z jej numerem pozycji.
  3. Stwórz zmienną z tekstem „Python”. Wyświetl ten tekst pionowo (każda litera w nowej linii).
  4. Pobierz zdanie od użytkownika. Policz ile jest w nim samogłosek (a, e, i, o, u, y).
  5. Pobierz słowo od użytkownika. Sprawdź czy jest palindromem (czytane od przodu i tyłu tak samo, np. „kajak”).
  6. Stwórz hasło z podanego tekstu biorąc co drugą literę.
  7. Pobierz zdanie. Zamień wszystkie spacje na podkreślniki używając pętli.
  8. Pobierz tekst. Policz ile jest w nim cyfr.
  9. Pobierz imię i nazwisko. Stwórz inicjały (np. Jan Kowalski → J.K.).
  10. Pobierz zdanie. Wyświetl je od tyłu (ostatnia litera jako pierwsza).

Pętla for ze słownikami

  1. Stwórz słownik z 3 produktami i ich cenami. Wyświetl każdy produkt z ceną w formacie „Produkt: X zł”.
  2. Stwórz słownik z ocenami z przedmiotów (np. {„matematyka”: 5, „polski”: 4}). Oblicz średnią ocen.
  3. Mając słownik użytkowników ze statusami, wyświetl tylko tych użytkowników którzy mają status „active”.
  4. Stwórz słownik produktów z cenami. Podnieś każdą cenę o 10% i wyświetl nowy słownik.
  5. Stwórz słownik z imionami i wiekami. Wyświetl imiona osób pełnoletnich (wiek >= 18).
  6. Mając słownik angielsko-polski, pozwól użytkownikowi wpisać słowo angielskie i wyświetl tłumaczenie.
  7. Stwórz słownik miast z liczbą mieszkańców. Znajdź miasto z największą liczbą mieszkańców.
  8. Stwórz słownik z nazwami plików i ich rozszerzeniami. Policz ile jest plików każdego typu.
  9. Stwórz dwa słowniki i znajdź wspólne klucze.
  10. Stwórz słownik punktów graczy. Wyświetl ranking od najwyższego do najniższego wyniku.

Zagnieżdżone pętle for

  1. Wyświetl tabliczkę mnożenia od 1 do 10 (dla każdej liczby od 1 do 10).
  2. Narysuj kwadrat 5×5 z gwiazdek używając zagnieżdżonych pętli.
  3. Narysuj prostokąt o wymiarach podanych przez użytkownika (szerokość × wysokość) z symbolu „#”.
  4. Stwórz choinkę z gwiazdek o wysokości podanej przez użytkownika.
  5. Wyświetl wszystkie pary liczb (x, y) gdzie x jest z zakresu 1-3, a y z zakresu 1-3.
  6. Stwórz listę list (macierz 3×3) wypełnioną zerami.
  7. Pobierz dwie listy liczb. Stwórz wszystkie możliwe pary (jedna liczba z pierwszej listy, jedna z drugiej).
  8. Narysuj diament z gwiazdek (górna i dolna część piramidy).
  9. Stwórz szachownicę 8×8 używając symboli „■” i „□” na przemian.
  10. Wyświetl trójkąt Pascala do 5 poziomu.

Podstawy pętli while

  1. Napisz pętlę while, która wyświetla liczby od 1 do 10.
  2. Napisz pętlę while, która dodaje liczby od 1 do 100 i wyświetla sumę.
  3. Pobieraj liczby od użytkownika dopóki nie wpisze 0. Potem wyświetl sumę wszystkich liczb.
  4. Napisz program, który pyta użytkownika o hasło dopóki nie wpisze poprawnego (hasło ustal sam).
  5. Stwórz licznik odliczający od 10 do 0 z napisem „Start!” na końcu.
  6. Pobieraj od użytkownika liczby dopóki ich suma nie przekroczy 100. Wyświetl ile liczb wprowadzono.
  7. Napisz program zgadywania liczby (komputer losuje, użytkownik zgaduje), który działa dopóki użytkownik nie zgadnie.
  8. Pobieraj liczby od użytkownika i dodawaj do listy. Zatrzymaj gdy użytkownik wpisze „koniec”.
  9. Napisz pętlę która dzieli liczbę przez 2 dopóki wynik jest większy od 1. Policz ile było operacji.
  10. Symuluj rzut monetą (losowo 0 lub 1) dopóki nie wypadnie 5 razy „orzeł” pod rząd. Policz ile było rzutów.

Instrukcja break

  1. Wyświetl liczby od 1 do 100, ale przerwij pętlę gdy dojdziesz do pierwszej liczby podzielnej przez 7.
  2. Pobieraj liczby od użytkownika. Jeśli wpisze liczbę ujemną, przerwij pętlę i wyświetl sumę dotychczasowych liczb.
  3. Przeszukaj listę [10, 23, 5, 67, 89, 3] i znajdź pierwszą liczbę większą od 50. Użyj break.
  4. Napisz program który pyta o login i hasło maksymalnie 3 razy. Po poprawnym logowaniu użyj break.
  5. W liście liczb znajdź pierwszą liczbę parzystą i wyświetl ją. Użyj break aby nie sprawdzać reszty listy.

Instrukcja continue

  1. Wyświetl liczby od 1 do 20, ale pomiń liczby podzielne przez 3.
  2. Mając listę [„Python”, „”, „Java”, None, „C++”], wyświetl tylko niepuste elementy (pomiń „” i None).
  3. Wyświetl liczby od 1 do 50, ale pomiń liczby z zakresu 20-30.
  4. Mając listę ocen [5, 3, 4, 2, 5, 1], wyświetl tylko oceny pozytywne (3-6), pomijając niedostateczne.
  5. W liście produktów ze słownika pomiń produkty o cenie 0 zł (niedostępne).

List Comprehension

  1. Stwórz listę liczb od 1 do 20 używając list comprehension.
  2. Stwórz listę kwadratów liczb od 1 do 10 używając list comprehension.
  3. Z listy [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] wybierz tylko liczby nieparzyste używając list comprehension.
  4. Mając listę słów [„python”, „java”, „c++”], stwórz nową listę z tymi samymi słowami wielkimi literami.
  5. Z listy liczb [-5, 3, -1, 7, -2, 8] wybierz tylko liczby dodatnie używając list comprehension.
  6. Stwórz listę zawierającą długości słów z listy [„kot”, „pies”, „chomik”, „papuga”].
  7. Z listy [1, 2, 3, 4, 5] stwórz listę [„nieparzysta”, „parzysta”, „nieparzysta”, …] używając list comprehension z if-else.
  8. Mając dwie listy [1, 2, 3] i [10, 20, 30], stwórz listę sum par o tych samych indeksach: [11, 22, 33].
  9. Z tekstu „Python Programming” stwórz listę samogłosek które w nim występują.
  10. Stwórz listę krotek (liczba, kwadrat) dla liczb od 1 do 10 używając list comprehension.

Dict Comprehension

  1. Stwórz słownik {1: 1, 2: 4, 3: 9, …} dla liczb od 1 do 10 używając dict comprehension.
  2. Mając listę [„a”, „b”, „c”], stwórz słownik {„a”: 0, „b”: 1, „c”: 2} (litera: indeks).
  3. Z listy słów stwórz słownik {słowo: długość_słowa} używając dict comprehension.
  4. Mając słownik {„a”: 1, „b”: 2, „c”: 3}, stwórz nowy gdzie wartości są podwojone.
  5. Stwórz słownik kwadratów tylko dla liczb parzystych z zakresu 1-20.
  6. Odwróć słownik {„Jan”: 25, „Anna”: 30, „Piotr”: 28} (wartość staje się kluczem).
  7. Z dwóch list (kluczy i wartości) stwórz słownik używając dict comprehension.
  8. Stwórz słownik {liczba: „parzysta”/”nieparzysta”} dla liczb 1-10.
  9. Mając słownik produktów z cenami, stwórz nowy tylko z produktami droższymi niż 50 zł.
  10. Ze słownika punktów graczy wybierz tylko tych którzy mają więcej niż 100 punktów.

Zadania matematyczne

  1. Oblicz sumę wszystkich liczb podzielnych przez 3 lub 5 w zakresie 1-1000.
  2. Znajdź wszystkie liczby doskonałe w zakresie 1-10000 (liczba doskonała równa się sumie swoich dzielników).
  3. Napisz program obliczający n-ty wyraz ciągu arytmetycznego (a₁, różnica, n podane przez użytkownika).
  4. Oblicz sumę cyfr liczby podanej przez użytkownika (np. dla 123 suma to 6).
  5. Znajdź wszystkie liczby pierwsze w zakresie 1-100 używając pętli.
  6. Napisz program sprawdzający czy liczba jest liczbą Armstronga (np. 153 = 1³ + 5³ + 3³).
  7. Oblicz NWW (najmniejszą wspólną wielokrotność) dwóch liczb.
  8. Wygeneruj ciąg Collatza dla liczby podanej przez użytkownika (jeśli parzysta: n/2, jeśli nieparzysta: 3n+1).
  9. Znajdź cyfry które powtarzają się w dwóch różnych liczbach.
  10. Oblicz sumę iloczynów cyfr na pozycjach parzystych i nieparzystych w liczbie.

Zadania ze stringami

  1. Pobierz zdanie. Policz ile jest słów (rozdzielonych spacjami).
  2. Pobierz tekst. Zamień pierwszą literę każdego słowa na wielką.
  3. Pobierz zdanie. Wyświetl najdłuższe słowo.
  4. Sprawdź czy podany tekst zawiera tylko litery i cyfry (bez znaków specjalnych).
  5. Pobierz dwa słowa. Sprawdź czy są anagramami (te same litery w innej kolejności).
  6. Usuń wszystkie samogłoski z podanego tekstu.
  7. Sprawdź czy podane zdanie jest pangramem (zawiera wszystkie litery alfabetu).
  8. Zaszyfruj tekst szyfrem Cezara (przesunięcie każdej litery o n pozycji).
  9. Policz wystąpienia każdego słowa w tekście i wyświetl jako słownik.
  10. Znajdź wszystkie słowa w tekście które zaczynają się i kończą tą samą literą.

Zadania z walidacją danych

  1. Pobieraj liczby od użytkownika dopóki nie poda liczby z zakresu 1-10.
  2. Pobierz od użytkownika email. Sprawdzaj dopóki nie będzie zawierał @ i kropki.
  3. Pobierz hasło które ma minimum 8 znaków, wielką literę, małą literę i cyfrę. Powtarzaj dopóki nie będzie poprawne.
  4. Pobierz numer telefonu (9 cyfr). Waliduj i powtarzaj dopóki nie będzie poprawny.
  5. Pobierz datę urodzenia. Oblicz wiek i sprawdź czy osoba jest pełnoletnia. Powtarzaj do poprawnego formatu.

Zadania algorytmiczne

  1. Zaimplementuj wyszukiwanie binarne w posortowanej liście (algorytm z materiału).
  2. Posortuj listę liczb używając algorytmu bąbelkowego (bubble sort).
  3. Znajdź drugi największy element w liście bez sortowania.
  4. Zaimplementuj algorytm Euklidesa do znajdowania NWD.
  5. Sprawdź czy nawiasy w wyrażeniu są zbalansowane (np. „((()))” – OK, „(()” – błąd).

Zadania kompleksowe

  1. Stwórz prosty system quizu: 5 pytań, każde w pętli, na końcu wynik i ocena.
  2. Napisz grę „Kółko i krzyżyk” dla dwóch graczy (plansza 3×3, pętle do rozgrywki).
  3. Stwórz symulator bankomatu: menu w pętli, operacje (wpłata, wypłata, saldo), wyjście przez break.
  4. Napisz generator haseł: długość i rodzaj znaków wybiera użytkownik, generuj w pętli.
  5. Stwórz książkę adresową: menu z opcjami (dodaj, usuń, szukaj, wyświetl wszystkie), pętla główna.
  6. Napisz kalkulator macierzy: dodawanie, odejmowanie macierzy 3×3.
  7. Stwórz system zarządzania studentami: dodawaj studentów ze stopniami, obliczaj średnie, wyświetlaj ranking.
  8. Napisz symulator sklepu: produkty ze słownika, koszyk, obliczanie sumy, pętla zakupów.
  9. Stwórz generator faktur: pobieraj produkty i ilości w pętli, generuj fakturę z sumą i VAT.
  10. Napisz prostą grę RPG: walka w turach, punkty życia, pętla walki, system doświadczenia.