Losowy cytat w Pythonie – jak napisać prosty generator

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
11 min czytania

Aby napisać prosty generator losowych cytatów w Pythonie, potrzebujesz tylko kilku linijek kodu, zainstalowanego Pythona oraz pliku z listą cytatów (albo listy zapisanej w samym skrypcie). Taki generator może działać w terminalu, na stronie WWW, a nawet jako bot – ale zaczniemy od najprostszego wariantu.

1. Co zrobimy w tym poradniku

W tym poradniku krok po kroku:

  • wyjaśnię, jak zainstalować Pythona (jeżeli jeszcze go nie masz),
  • pokażę, jak uruchomić pierwszy prosty program w Pythonie,
  • napiszemy minimalny generator losowych cytatów,
  • na końcu podam pomysły, jak taki generator wykorzystać na stronie o internecie.

Dodatkowo rozbudujemy generator o:

  • wczytywanie cytatów z pliku tekstowego,
  • zapis cytatów do pliku,
  • obsługę błędów,
  • prosty interfejs w terminalu (menu).

Poradnik jest skierowany do osób początkujących, ale kod będzie napisany tak, by łatwo dało się go potem rozbudować.

2. Instalacja Pythona (Windows, macOS, Linux)

Jeżeli masz już Python 3 (np. 3.10, 3.11, 3.12), możesz ten punkt pominąć.

2.1. Sprawdzenie, czy Python jest zainstalowany

Otwórz odpowiednią konsolę systemową: w Windows – Wiersz polecenia (cmd) lub PowerShell; w macOS/Linux – Terminal.

Wpisz:

python --version

lub:

python3 --version

Jeżeli zobaczysz coś w stylu:

Python 3.11.4

To znaczy, że Python jest zainstalowany. Jeśli pojawi się komunikat o błędzie, zainstaluj go.

2.2. Instalacja (skrót)

Standardowa procedura:

  • pobierz instalator Pythona dla swojego systemu ze strony python.org (sekcja Downloads – pobieranie),
  • uruchom instalator,
  • na Windows zaznacz opcję Add Python to PATH, dzięki czemu polecenie python zadziała z wiersza poleceń,
  • przejdź przez kreator (Dalej → Dalej → Instaluj).

Po instalacji ponownie sprawdź wersję poleceniem: python --version. Szybka weryfikacja po instalacji oszczędzi Ci późniejszych problemów z uruchamianiem skryptów.

3. Jak uruchamiać programy w Pythonie

Będziemy korzystać z plików z rozszerzeniem .py.

Ogólny schemat pracy z programem w Pythonie:

  1. Otwórz dowolny edytor tekstu (może być Notatnik, ale lepiej: VS Code, PyCharm, Notepad++ itp.).
  2. Wpisz lub wklej kod programu.
  3. Zapisz plik pod nazwą, np. cytaty.py.
  4. W terminalu przejdź do katalogu z tym plikiem (np. cd C:\projekty\python).
  5. Uruchom skrypt poleceniem odpowiednim dla Twojego systemu.

Na Windows najczęściej użyj:

python cytaty.py

W Linux/macOS zwykle użyj:

python3 cytaty.py

To jest standardowy sposób uruchamiania prostych programów w Pythonie z linii poleceń.

4. Minimalny generator losowych cytatów (wersja 1)

Na początek zrobimy najprostszy możliwy generator, który ma listę cytatów w kodzie i po uruchomieniu losuje jeden cytat, wyświetlając go w terminalu.

4.1. Kod

Utwórz plik cytaty.py i wklej:

import random # moduł do losowania

cytaty = [
"Internet to największa biblioteka świata, w której połowa książek nie ma autora.",
"W internecie nic nie znika – tylko trudniej to znaleźć.",
"Jeśli coś jest za darmo, to Ty jesteś produktem.",
"Przed udostępnieniem czegokolwiek w sieci zadaj sobie pytanie: czy chciałbyś to zobaczyć na pierwszej stronie portalu jutro rano?",
"Silne hasło to takie, którego sam nie pamiętasz."
]

wybrany_cytat = random.choice(cytaty) # losujemy jeden element z listy
print("Twój losowy cytat:")
print(wybrany_cytat)

Uruchom w terminalu:

python cytaty.py

Za każdym razem powinien pojawić się inny cytat (choć losowo może się powtarzać).

5. Generator cytatów z pliku tekstowego (wersja 2)

Przechowywanie cytatów w kodzie ma minus: aby coś zmienić, trzeba edytować program. Wygodniej jest mieć osobny plik, np. cytaty.txt.

5.1. Przygotuj plik cytaty.txt

W tym samym katalogu, co cytaty.py, stwórz plik cytaty.txt, np. tak:

Internet to największa biblioteka świata, w której połowa książek nie ma autora.
W internecie nic nie znika – tylko trudniej to znaleźć.
Jeśli coś jest za darmo, to Ty jesteś produktem.
Przed udostępnieniem czegokolwiek w sieci zadaj sobie pytanie: czy chciałbyś to zobaczyć na pierwszej stronie portalu jutro rano?
Silne hasło to takie, którego sam nie pamiętasz.
Anonimowość w sieci kończy się tam, gdzie zaczyna się prawo.
Twoje dane są cenniejsze niż złoto – ale oddajesz je za darmo.

Każdy cytat w nowej linii.

5.2. Kod wczytujący cytaty z pliku

Nowa wersja cytaty.py:

import random

NAZWA_PLIKU = "cytaty.txt"

def wczytaj_cytaty(nazwa_pliku):
try:
with open(nazwa_pliku, "r", encoding="utf-8") as f:
linie = f.readlines()
except FileNotFoundError:
print(f"Nie znaleziono pliku: {nazwa_pliku}")
return []

# Oczyszczamy linie z białych znaków i usuwamy puste
cytaty = [linia.strip() for linia in linie if linia.strip()]
return cytaty

def losowy_cytat(cytaty):
if not cytaty:
return "Brak cytatów do wyświetlenia."
return random.choice(cytaty)

def main():
cytaty = wczytaj_cytaty(NAZWA_PLIKU)
cytat = losowy_cytat(cytaty)
print("Twój losowy cytat:")
print(cytat)

if __name__ == "__main__":
main()

Co tu się dzieje:

  • wczytaj_cytaty(…) – otwiera plik, czyta wszystkie linie, usuwa puste i zwraca listę cytatów;
  • brak pliku – jeśli plik nie istnieje, wyświetlany jest komunikat i zwracana pusta lista;
  • losowy_cytat(…) – zwraca losowy cytat (albo komunikat, że brak cytatów);
  • main() – spina wszystko w całość;
  • if __name__ == „__main__”: – standardowy sposób uruchamiania programu w Pythonie z pliku.

6. Dodawanie nowych cytatów z poziomu programu (wersja 3)

Teraz rozbudujemy generator tak, aby można było:

  • wylosować cytat,
  • dodać nowy cytat do pliku,
  • zakończyć program.

Zrobimy proste menu tekstowe w terminalu.

6.1. Rozszerzony kod

import random
import os

NAZWA_PLIKU = "cytaty.txt"

def wczytaj_cytaty(nazwa_pliku):
if not os.path.exists(nazwa_pliku):
# Jeśli plik nie istnieje – tworzymy pusty
open(nazwa_pliku, "a", encoding="utf-8").close()

with open(nazwa_pliku, "r", encoding="utf-8") as f:
linie = f.readlines()

cytaty = [linia.strip() for linia in linie if linia.strip()]
return cytaty

def zapisz_cytat(nazwa_pliku, cytat):
cytat = cytat.strip()
if not cytat:
print("Nie można zapisać pustego cytatu.")
return

with open(nazwa_pliku, "a", encoding="utf-8") as f:
f.write(cytat + "\n")

print("Cytat zapisany.")

def losowy_cytat(cytaty):
if not cytaty:
return "Brak cytatów do wyświetlenia. Dodaj coś najpierw!"
return random.choice(cytaty)

def wyswietl_menu():
print()
print("=== Generator losowych cytatów o internecie ===")
print("1. Wylosuj cytat")
print("2. Dodaj nowy cytat")
print("3. Wyjście")

def main():
while True:
wyswietl_menu()
wybor = input("Wybierz opcję (1-3): ").strip()

if wybor == "1":
cytaty = wczytaj_cytaty(NAZWA_PLIKU)
print()
print("Twój losowy cytat:")
print(losowy_cytat(cytaty))

elif wybor == "2":
print()
nowy = input("Wpisz nowy cytat: ")
zapisz_cytat(NAZWA_PLIKU, nowy)

elif wybor == "3":
print("Do zobaczenia!")
break

else:
print("Nieprawidłowa opcja, spróbuj ponownie.")

if __name__ == "__main__":
main()

Ta wersja nadaje się już jako prosta aplikacja konsolowa – idealna do artykułu instruktażowego dokładnie takiego jak ten.

7. Drobne ulepszenia i warianty

Poniżej kilka rozszerzeń, które możesz dodać w zależności od potrzeb strony.

7.1. Autor cytatu i kategoria

Zamiast przechowywać tylko tekst, możesz dodać autora i kategorię (np. „bezpieczeństwo”, „media społecznościowe”, „prywatność”).

Najprostszy format w pliku: jedna linia = cytat | autor | kategoria

Przykład cytaty.txt:

Jeśli coś jest za darmo, to Ty jesteś produktem. | Anonim | prywatność
Silne hasło to takie, którego sam nie pamiętasz. | Anonim | bezpieczeństwo
Twoje dane są cenniejsze niż złoto – ale oddajesz je za darmo. | Anonim | prywatność

Przykładowy zapis i odczyt (w skrócie):

def wczytaj_cytaty_zaawansowane(nazwa_pliku):
wynik = []
with open(nazwa_pliku, "r", encoding="utf-8") as f:
for linia in f:
linia = linia.strip()
if not linia:
continue

czesci = [x.strip() for x in linia.split("|")] # oczekujemy: cytat | autor | kategoria

if len(czesci) == 3:
cytat, autor, kategoria = czesci
elif len(czesci) == 2:
cytat, autor = czesci
kategoria = ""
else:
cytat = linia
autor = ""
kategoria = ""

wynik.append({
"cytat": cytat,
"autor": autor,
"kategoria": kategoria
})

return wynik

Możesz potem losować cytat z filtrowaniem po kategorii albo formatować wyjście w stylu: „Cytat” — Autor [Kategoria].

7.2. Generator cytatu „na start systemu” (Linux/macOS)

Na systemach unixowych możesz dodać wywołanie skryptu do plików startowych powłoki (np. .bashrc, .zshrc), aby za każdym razem po otwarciu terminala wyświetlał losowy cytat o internecie.

Przykład (fragment .bashrc):

python3 /ścieżka/do/cytaty.py

Za każdym razem, gdy otworzysz terminal, zobaczysz losowy cytat.

8. Jak wykorzystać generator na stronie o internecie

Masz już działający kod w Pythonie. Jak to połączyć z polską stroną internetową o internecie? Kilka scenariuszy:

  • artykuł poradnikowy – dokładnie taki jak ten; poniżej lista elementów, które warto pokazać;
  • sekcja „Cytat dnia” – generator może tworzyć statyczny fragment HTML z cytatem, który wstawisz do CMS jako include;
  • API cytatów – opakuj generator w serwer HTTP (np. Flask lub FastAPI), który zwraca JSON; strona w JavaScript pobierze cytat przez AJAX;
  • narzędzie edukacyjne – dodaj kategorię „bezpieczeństwo” i generuj cytaty ostrzegające przed phishingiem, słabymi hasłami i nadmiernym udostępnianiem danych.

Co warto pokazać w artykule poradnikowym:

  • opis instalacji Pythona,
  • wklejone pełne przykłady kodu,
  • zrzuty ekranu z terminala (użytkownik widzi efekt).

9. Dalsza nauka Pythona

Oficjalny samouczek Pythona uczy krok po kroku składni, typów, funkcji, modułów i pracy z plikami – dokładnie tak jak w powyższych przykładach.

Warto też sięgnąć po polskie materiały typu „Python dla wszystkich”, które rozwijają podstawy programowania i praktyczne zastosowania w analizie danych, pracy z plikami czy sieci. Jeśli chcesz, mogę przygotować kolejną część: jak z tego generatora zrobić prostego bota na Telegramie albo mikroserwis HTTP zwracający cytat jako JSON.

Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *