Kończysz samouczek. Wpisujesz każdą linijkę, uruchamiasz każdy przykład, patrzysz, jak wszystko działa. Potem otwierasz pusty edytor, żeby stworzyć coś własnego – i nic. Ani jednego pomysłu.
Niemal każdy początkujący wpada w pułapkę samouczków (zazwyczaj tuż po swoim pierwszym kursie Pythona). Możesz całymi dniami czytać o pętlach for, ale w momencie, gdy nikt nie mówi Ci, co masz wpisać, Twój mózg po prostu się zawiesza.
Wiedza o tym, jak wygląda kod, a samodzielne jego pisanie to dwie zupełnie różne umiejętności. Droga od jednego do drugiego prowadzi przez tworzenie własnych projektów. Samodzielnie.
I nie, to wcale nie musi być nic użytecznego. Nie wydajesz właśnie aplikacji na rynek ani nie pomagasz w projektach open source. Potrzebujesz po prostu małych, prostych programów, które działają – jednego po drugim – dopóki Twój mózg nie przestanie się zawieszać.
Temu właśnie służy ten wpis. Poniżej znajdziesz 13 prostych projektów w Pythonie, z których każdy możesz ukończyć w czasie od 10 minut do godziny. Każdy z nich uczy jednej lub dwóch rzeczy, nic więcej. I każdy kończy się plikiem, który działa na Twoim komputerze, napisanym przez Ciebie.
Nie czujesz się jeszcze na siłach, by budować własne projekty? Bez obaw! Każda wielka podróż zaczyna się od podstaw. Poznaj podstawy obsługi komputera i zbuduj solidne fundamenty, zanim zrobisz kolejny krok.
Dlaczego warto budować własne projekty zamiast oglądać samouczki?
Ponieważ oglądanie samouczków daje złudzenie nauki, ale tak naprawdę ktoś myśli w nich za Ciebie. Samodzielne tworzenie zmusza do podejmowania decyzji. To Ty musisz nazwać zmienną, wybrać odpowiednią pętlę i dowiedzieć się, dlaczego Twój kod wypisał None zamiast oczekiwanej liczby.
Małe projekty rozwiązują też problem z motywacją. Dwutygodniowy projekt brzmi imponująco, dopóki nie utkniesz w martwym punkcie i nigdy do niego nie wrócisz. Projekt na 30 minut kończysz dzisiaj. Otrzymujesz działający plik i małe zwycięstwo – a to właśnie to zwycięstwo sprawia, że jutro znów otworzysz edytor.

1. Gra w zgadywanie liczb
Klasyk. Komputer losuje liczbę od 1 do 100, Ty zgadujesz, a on podpowiada „za dużo” lub „za mało”, dopóki nie trafisz. Pierwszy prawdziwy program większości programistów – i nie bez powodu.
import random
secret = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess a number (1-100): "))
guesses += 1
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
else:
print(f"Got it in {guesses} guesses")
break
Czego się nauczysz: pętli while, instrukcji warunkowych, modułu random oraz konwersji wprowadzonych danych na liczbę. Gdy gra zacznie działać, dodaj limit prób, aby rozgrywka kończyła się, jeśli nie zgadniesz liczby na czas.
2. Generator historii (Mad Libs)
Poproś użytkownika o podanie kilku słów – rzeczownika, czasownika, przymiotnika – wstaw je do zabawnego zdania i wyświetl wynik. Dziesięć minut pracy od początku do końca.
noun = input("Noun: ")
verb = input("Verb: ")
adjective = input("Adjective: ")
place = input("A place: ")
story = f"Yesterday I went to the {place} and saw a {adjective} {noun} that started to {verb}."
print(story)
Czego się nauczysz: f-stringów, pobierania wielu danych wejściowych pod rząd, budowania ciągów znaków ze zmiennych. Projekt łatwo rozbudować w przyszłości o dłuższe historie lub listę szablonów losowanych przez program.
3. Symulator rzutu kością
Rzuć jedną kością. Rzuć dwiema. Rzuć kością dwudziestościenną (k20) na wieczór z planszówkami. Dwie linijki logiki i cokolwiek zechcesz wokół nich nabudować.
import random
def roll(sides=6, count=1):
return [random.randint(1, sides) for _ in range(count)]
print(roll(6, 2)) # rolls two six-sided dice
print(roll(20)) # rolls one d20
Czego się nauczysz: funkcji z wartościami domyślnymi, wyrażeń listowych (list comprehensions) oraz wywoływania tej samej funkcji z różnymi argumentami. Gdy program zacznie działać, dodaj proste menu, aby użytkownik mógł sam wybrać liczbę ścianek i kości przy uruchomieniu.
4. Prosty kalkulator
Dodawanie, odejmowanie, mnożenie, dzielenie. Dwie liczby, jeden operator. Tak, kalkulatory już istnieją. Nie o to chodzi. Chodzi o to, aby samodzielnie połączyć te klocki i zauważyć, o czym zapomniało się za pierwszym razem.
def calc(a, b, op):
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/":
if b == 0:
return "Can't divide by zero"
return a / b
a = float(input("First number: "))
op = input("Operator (+, -, *, /): ")
b = float(input("Second number: "))
print(calc(a, b, op))
Czego się nauczysz: pisania funkcji, instrukcji warunkowych if oraz obsługi tego jednego podstępnego przypadku skrajnego (dzielenia przez zero). Chcesz wyzwania? Dodaj obsługę łańcuchowych działań.
5. Kamień, papier, nożyce
Wybierasz Ty, wybiera komputer, a zasady decydują, kto wygrywa. Świetny sposób na przećwiczenie prostej pętli gry i oswojenie się z użyciem słownika jako tabeli wyszukiwania.
import random
options = ["rock", "paper", "scissors"]
wins_against = {"rock": "scissors", "paper": "rock", "scissors": "paper"}
you = input("Pick rock, paper, or scissors: ").lower()
cpu = random.choice(options)
print(f"Computer picked {cpu}.")
if you == cpu:
print("Tie")
elif wins_against[you] == cpu:
print("You win")
else:
print("Computer wins")
Czego się nauczysz: słowników do szybkiego wyszukiwania danych, random.choice oraz porównywania ciągów znaków. Zamknij całość w pętli while i zliczaj punkty w kolejnych rundach – w jedno popołudnie stworzysz minigrę.
6. Generator haseł
Stwórz losowe hasło o długości N znaków, składające się z liter, cyfr i symboli. Przydatne, proste, do zrobienia w 15 minut. Coś, co może Ci się rzeczywiście przydać na co dzień.
import random
import string
def make_password(length=12):
pool = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(pool) for _ in range(length))
print(make_password(16))
Czego się nauczysz: modułu string, łączenia znaków w jeden ciąg (string) oraz losowania znaków ze zbioru. Dodaj opcję pomijania znaków specjalnych dla systemów, które ich nie akceptują – a jest ich więcej, niż mogłoby się wydawać.
7. Lista zadań (To-Do) w terminalu
Proste menu dodawania, wyświetlania i usuwania zadań bezpośrednio w terminalu. Bez bazy danych, bez konfiguracji – zwykła lista w Pythonie, która istnieje tylko do momentu wyłączenia programu. To w zupełności wystarczy do nauki.
todos = []
while True:
cmd = input("Command (add/list/remove/quit): ")
if cmd == "add":
todos.append(input("Task: "))
elif cmd == "list":
for i, t in enumerate(todos, 1):
print(f"{i}. {t}")
elif cmd == "remove":
idx = int(input("Index to remove: ")) - 1
if 0 <= idx < len(todos):
todos.pop(idx)
elif cmd == "quit":
break
Czego się nauczysz: tworzenia programu sterowanego menu, modyfikowania list, funkcji enumerate oraz prostego triku na numerowanie od 1 zamiast od 0. W kolejnej wersji możesz zapisywać zadania do pliku tekstowego, aby nie znikały po wyłączeniu programu. Wtedy poczujesz, że to już prawdziwa aplikacja.
Coddy zamienia naukę Pythona w codzienny nawyk dzięki grywalizacji, punktom doświadczenia (XP) i krótkim lekcjom, które motywują do regularnego otwierania aplikacji.
8. Licznik słów i znaków
Wklejasz tekst, a w zamian otrzymujesz liczbę słów, znaków oraz najczęściej występujące słowo. Przydatne, gdy piszesz teksty z określonym limitem znaków – a takich sytuacji jest sporo, gdy zaczniesz zwracać na to uwagę.
from collections import Counter
text = input("Paste your text: ")
words = text.split()
chars = len(text)
most_common = Counter(words).most_common(1)
print(f"Words: {len(words)}")
print(f"Characters: {chars}")
print(f"Most common word: {most_common[0][0]} ({most_common[0][1]} times)")
Czego się nauczysz: modułu collections, metody .split() oraz odczytywania wartości zwracanych przez Counter. Spróbuj pominąć krótkie słowa (spójniki, przyimki), aby uzyskać ciekawsze wyniki – w przeciwnym razie najczęstszym słowem zawsze będzie jakiś spójnik, co niewiele Ci powie.
9. Kalkulator napiwków
Suma rachunku, procent napiwku, podział na liczbę osób. Rodzaj małego narzędzia, po które chętnie sięgniesz nawet za kilka lat, na długo po tym, jak zapomnisz, że w ogóle je napisałeś.
bill = float(input("Bill total: "))
tip_pct = float(input("Tip percentage (e.g., 18): "))
people = int(input("How many people: "))
tip = bill * (tip_pct / 100)
total = bill + tip
per_person = total / people
print(f"Tip: {tip:.2f}")
print(f"Total: {total:.2f}")
print(f"Per person: {per_person:.2f}")
Czego się nauczysz: operatorów matematycznych, konwersji danych wejściowych na liczby oraz zaokrąglania do dwóch miejsc po przecinku za pomocą :.2f. Rozbuduj program o zaokrąglanie kwoty na osobę w górę, aby nikt przy stoliku nie był stratny.
10. Minutnik (Countdown Timer)
Wpisujesz liczbę sekund, a program odlicza czas do zera. Mały, satysfakcjonujący projekt, który po ukończeniu świetnie sprawdzi się jako stoper do przerw czy techniki Pomodoro.
import time
seconds = int(input("Seconds: "))
while seconds >= 0:
mins, secs = divmod(seconds, 60)
print(f"{mins:02d}:{secs:02d}", end="\r")
time.sleep(1)
seconds -= 1
print("Time's up ")
Czego się nauczysz: modułu time, funkcji divmod do dzielenia liczb na minuty i sekundy oraz sztuczki z \r do nadpisywania tej samej linii w terminalu. To właśnie end="\r" sprawia, że minutnik wygląda profesjonalnie, zamiast zasypywać terminal kolejnymi linijkami tekstu.
11. Generator losowych cytatów
Lista cytatów – motywacyjnych, zabawnych, związanych z programowaniem, jakich tylko chcesz – z której program losuje i wyświetla jeden po uruchomieniu. Prawie zbyt proste. Zrób to mimo wszystko.
import random
quotes = [
"The only way to learn a new programming language is by writing programs in it.",
"Programs must be written for people to read, and only incidentally for machines to execute.",
"Premature optimization is the root of all evil.",
"Simplicity is the soul of efficiency.",
"Code is like humor. When you have to explain it, it's bad.",
]
print(random.choice(quotes))
Czego się nauczysz: podstaw pracy z listami, random.choice oraz najprostszego przydatnego programu w całym języku. Podepnij go pod uruchamianie terminala, aby zobaczyć nowy cytat przy każdym otwarciu konsoli – to drobiazg, który sprawia, że kodowanie staje się przyjemniejsze.
12. Wisielec (wersja uproszczona)
Wybierz tajne słowo, wyświetl kreski w miejsce liter, pozwól użytkownikowi zgadywać litery i zakończ grę po sześciu nieudanych próbach. Nieco trudniejszy projekt niż pozostałe, ale wciąż do zrobienia w około godzinę, jeśli zachowasz prostotę.
import random
words = ["python", "syntax", "variable", "function", "module"]
secret = random.choice(words)
guessed = set()
wrong = 0
while wrong < 6:
display = "".join(c if c in guessed else "_" for c in secret)
print(display)
if "_" not in display:
print("You won")
break
letter = input("Guess a letter: ").lower()
if letter in secret:
guessed.add(letter)
else:
wrong += 1
print(f"Wrong. {6 - wrong} tries left.")
else:
print(f"You lost. The word was {secret}.")
Czego się nauczysz: zbiorów (sets), budowania ciągów znaków z warunkiem wewnątrz oraz mniej znanej konstrukcji while-else (blok else wykonuje się tylko wtedy, gdy pętla zakończy się bez instrukcji break). Masz dość ciągłego zgadywania tych samych słów? Wczytaj je z pliku tekstowego. (Szybko Ci się znudzą, uwierz mi).
13. Konwerter jednostek
Przeliczaj popularne jednostki: stopnie Celsjusza na Fahrenheita, kilometry na mile, kilogramy na funty. Praktyczne, szybkie do napisania i przydatne w codziennym życiu.
def c_to_f(c):
return c * 9/5 + 32
def km_to_mi(km):
return km * 0.621371
def kg_to_lb(kg):
return kg * 2.20462
print("1. Celsius to Fahrenheit")
print("2. Kilometers to miles")
print("3. Kilograms to pounds")
choice = input("Pick a converter: ")
value = float(input("Value: "))
if choice == "1":
print(c_to_f(value))
elif choice == "2":
print(km_to_mi(value))
elif choice == "3":
print(kg_to_lb(value))
Czego się nauczysz: łączenia kilku małych funkcji w jednym pliku, prostego menu i obsługi wyboru użytkownika. Gdy podstawowe przeliczenia zaczną działać, dodaj opcje odwrotne (z F na C, z mil na km). Ten sam pomysł, połowa pracy, a podwójna praktyka.
Jak sprawić, by ta wiedza została w głowie?
Stworzenie jednego projektu to chwila. Tworzenie jednego dziennie przez dwa tygodnie to już nawyk. Różnica między ludźmi, którzy wychodzą poza poziom początkujący w Pythonie, a tymi, którzy tego nie robią, nie tkwi w talencie ani ilości wolnego czasu. Chodzi o regularność w ćwiczeniach.
Kilka wskazówek, które w tym pomogą (w kolejności od najważniejszych):
-
Wpisuj kod samodzielnie, nie kopiuj go! Może to być nudne i powtarzalne, ale to jedyny sposób, aby wzorce zakodowały się w Twoich dłoniach, a nie tylko w oczach. Kiedy po raz pierwszy wpiszesz
import randomz pamięci, poczujesz, że coś „kliknęło”. -
Celowo psuj swój kod. Gdy program już działa, usuń linijkę, zakomentuj funkcję lub zmień nazwę zmiennej i zobacz, co się stanie. Naprawianie błędów uczy znacznie więcej niż samo pisanie kodu. (To nie jest oczywiste, dopóki sam tego nie spróbujesz).
-
Napisz ten sam projekt dwukrotnie. Tydzień później spróbuj napisać grę w zgadywanie liczb od zera, bez zaglądania do poprzedniego kodu. Drugie podejście pokaże Ci, co naprawdę zapamiętałeś – a może to być mniej, niż Ci się wydaje. I to jest zupełnie normalne!
-
Dodaj coś od siebie. Weź dowolny z powyższych projektów i dobuduj do niego małą funkcję. Zapisz listę zadań do pliku. Spraw, by symulator kości wyświetlał wyniki jeden po drugim. To właśnie w tych dodatkach kryje się najwięcej nauki, ponieważ nikt nie napisał gotowej instrukcji do Twojej wersji.
Jeśli masz problem z utrzymaniem codziennej rutyny, to właśnie dlatego powstało Coddy. Krótkie, pięciominutowe lekcje Pythona, system codziennych serii (streaks), który motywuje do powrotu, gdy opada zapał, oraz podpowiedzi AI od Bugsy'ego bezpośrednio w lekcji, gdy utkniesz.
Każdy kurs możesz zacząć za darmo, w tym również Pythona. Stworzyliśmy go z myślą o osobach dokładnie w Twojej sytuacji: takich, które skończyły samouczki, nie czują się jeszcze pewnie i szukają ćwiczeń, które nie pochłoną całego wieczoru.
Co warto stworzyć w następnej kolejności?
Kiedy powyższe projekty zaczną wydawać się zbyt proste, będzie to oznaczać, że masz już za sobą najtrudniejszy pierwszy krok. Dobra robota! Kolejnym etapem są projekty średniozaawansowane – takie, które wymagają użycia jednej lub dwóch bibliotek oraz operacji na plikach lub sieci. Oto kilka propozycji na kolejny krok:
- Aplikacja pogodowa korzystająca z biblioteki
requestsi darmowego API pogodowego - Web scraper z użyciem
BeautifulSoup, który pobiera nagłówki z Twojego ulubionego portalu informacyjnego - Tekstowa gra przygodowa z kilkoma lokacjami i ekwipunkiem bohatera
- Minutnik Pomodoro, który zapisuje Twoje sesje do pliku CSV
- Prosta aplikacja we Flasku, która wyświetla jedną stronę z losowym żartem
Żaden z nich nie jest bardzo zaawansowany. Łączą one dwie lub trzy rzeczy, które już znasz, z jednym nowym modułem. Wybierz ten, który wydaje Ci się najciekawszy, bo to właśnie ten projekt najchętniej dokończysz.
Samouczki przestają działać w momencie, gdy zostawiają Cię samego i wymagają samodzielnego myślenia. Projekty – nawet te najprostsze – zmuszają do myślenia. Zrób ich wystarczająco dużo, a pułapka samouczków przestanie być dla Ciebie zagrożeniem.
Coddy pozwala przejść od biernego oglądania do prawdziwego kodowania dzięki pięciominutowym lekcjom Pythona, codziennym seriom i asystentowi AI o imieniu Bugsy, który daje wskazówki, zamiast zdradzać gotowe odpowiedzi.
Share this article
About the Author
Coddy Team
Editorial Team
Frequently Asked Questions
Jaki jest najprostszy projekt w Pythonie dla początkującego?
Standardową odpowiedzią jest gra w zgadywanie liczb. Jest krótka, wykorzystuje dane wejściowe, pętle i instrukcje warunkowe w jednym programie, a po uruchomieniu sprawia wrażenie prawdziwej gry. Większość osób jest w stanie ukończyć ją w 20 minut, nawet jeśli dopiero co dowiedzieli się, do czego służy pętla while.
Ile czasu powinny zajmować proste projekty w Pythonie?
Od dziesięciu minut do godziny. Jeśli spędzasz nad jednym projektem trzy godziny, to albo jest on zbyt trudny na Twoim obecnym poziomie, albo wpadłeś w króliczą norę debugowania, z której warto się jak najszybciej wydostać. Wybierz mniejszy projekt, ukończ go i wróć do poprzedniego później.
Czy muszę coś instalować, aby realizować te projekty?
Tak, jeśli chcesz uruchamiać je lokalnie; nie, jeśli nie masz takiej potrzeby. Instalacja Pythona ze strony python.org zajmuje około pięciu minut. Możesz też całkowicie pominąć instalację i uruchamiać je w przeglądarkowym playgroundzie, takim jak ten wewnątrz Coddy, co jest opcją niewymagającą żadnej konfiguracji.
Czy te projekty w Pythonie nadają się do CV?
Same w sobie – nie. Projekt do CV zazwyczaj wymaga większej głębi, np. stworzenia małej aplikacji internetowej, skryptu automatyzującego realne zadanie w pracy lub wkładu w projekt open-source. Te 13 projektów to etapy budujące pewność siebie, a nie gotowe elementy portfolio. Przygotują Cię one do tworzenia rzeczy, które warto będzie wpisać do CV w przyszłości.
Jakie pojęcia z Pythona opanuję dzięki tym projektom?
W tych 13 projektach zetkniesz się ze zmiennymi, operacjami wejścia/wyjścia, instrukcjami warunkowymi, pętlami, funkcjami, listami, słownikami, zbiorami (sets), modułem random, modułem time, f-stringami, list comprehensions oraz kilkoma modułami z biblioteki standardowej, takimi jak collections i string. To solidna, praktyczna porcja wiedzy o tym języku.
Co jeśli mój kod nie działa?
Przeczytaj komunikat o błędzie. Większość błędów popełnianych przez początkujących wskazuje niemal dokładnie, co poszło nie tak – zazwyczaj w linijce tuż nad tą, w której zaczynasz panikować. Wyszukaj komunikat o błędzie w Google, poproś asystenta AI, takiego jak Bugsy, o jego wyjaśnienie lub wklej go na forum. Debugowanie to umiejętność, którą rozwija się tak samo jak pisanie kodu – poprzez praktykę.
Czy mogę realizować te projekty na telefonie?
Tak. Python działa w mobilnych środowiskach programistycznych, w tym w aplikacji Coddy, która ma wbudowany playground do pisania kodu. Nie napiszesz oprogramowania klasy enterprise na ekranie wielkości dłoni, ale małe projekty ćwiczeniowe sprawdzą się w ten sposób doskonale. Wiele osób ćwiczy na telefonie częściej, niż kiedykolwiek robiłoby to na laptopie.
Jaki jest kolejny krok po prostych projektach w Pythonie?
Średniozaawansowane projekty łączące więcej pojęć: prosty web scraper, klient API, aplikacja w Flasku lub Django serwująca stronę czy skrypt przetwarzający pliki w folderze. Wszystko, co wymaga użycia nowej biblioteki i łączy się z czymś zewnętrznym, stanowi przydatny kolejny krok. Wybierz coś, co rozwiązuje mały problem w Twoim własnym życiu. To będzie projekt, który na pewno dokończysz.



