← Strona główna

02 — Funkcje wbudowane

len(), range(), input(), print(), type() i inne gotowe narzędzia Pythona.

Start i podstawy

1. Czym są funkcje wbudowane?

Funkcje wbudowane (built-in functions) to gotowe narzędzia dostępne w Pythonie bez importowania żadnych modułów. Są zawsze dostępne — wystarczy je wywołać po nazwie.

Funkcję wywołujesz pisząc jej nazwę i podając argumenty w nawiasach okrągłych: nazwa(argument). Funkcja może zwracać wartość (return) lub tylko wykonywać działanie (jak print()).

  • Argument — wartość przekazywana do funkcji
  • Wynik — wartość zwracana przez funkcję, możesz ją zapisać do zmiennej
  • Niektóre funkcje przyjmują wiele argumentów oddzielonych przecinkami
  • Niektóre mają argumenty opcjonalne z wartością domyślną
Zapamiętaj Pełna lista funkcji wbudowanych: dir(__builtins__) w konsoli Pythona. Na egzaminie liczy się znajomość tych najczęściej używanych.
Schemat wywołania funkcji
# wywołanie bez argumentu
wynik = funkcja()

# wywołanie z jednym argumentem
wynik = funkcja(argument)

# wywołanie z wieloma argumentami
wynik = funkcja(arg1, arg2, arg3)

# wywołanie z argumentem nazwanym
wynik = funkcja(arg1, klucz=wartość)

# wynik można od razu użyć
print(len("Python"))   # 6
print(type(3.14))      # <class 'float'>

2. Wejście i wyjście — input() i print()

input(prompt) — wyświetla tekst zachęty i czeka na wpisanie danych przez użytkownika. Zawsze zwraca str.

print(*args, sep, end, file) — wypisuje wartości na ekran.

  • sep=" " — separator między wartościami (domyślnie spacja)
  • end="\n" — co wypisać na końcu (domyślnie nowa linia)
  • Można podać wiele wartości naraz: print(a, b, c)
  • f-string: f"tekst {zmienna}" — najwygodniejszy sposób formatowania
  • :.2f — dwa miejsca po przecinku
  • :10 — pole szerokości 10 znaków
  • :>10 — wyrównanie do prawej
Przykład — input i print
# input — zawsze zwraca str
imie  = input("Imię: ")
wiek  = int(input("Wiek: "))
cena  = float(input("Cena: "))

# print — różne formy
print("Cześć", imie)
print(f"Masz {wiek} lat.")
print(f"Cena: {cena:.2f} zł")

# separator i końcówka
print("a", "b", "c", sep="-")    # a-b-c
print("Ładuję", end="")
print("...")                       # Ładuję...

# formatowanie kolumn
print(f"{'Produkt':<15} {'Cena':>8}")
print(f"{'Jabłko':<15} {2.49:>8.2f}")
print(f"{'Banan':<15} {1.20:>8.2f}")

3. Typy i konwersja — type(), int(), float(), str(), bool()

type(x) — zwraca typ obiektu. Przydatne do debugowania.

Funkcje konwertujące pozwalają zamieniać wartości między typami. Nieudana konwersja powoduje błąd ValueError.

FunkcjaCo robiUwaga
int(x)zamienia na liczbę całkowitąobcina część ułamkową
float(x)zamienia na liczbę z przecinkiemprzyjmuje też int
str(x)zamienia na tekstdziała na każdym typie
bool(x)zamienia na True/False0, "", [] → False
type(x)zwraca typ obiektunie konwertuje
Pułapka egzaminacyjna int(3.9)3, nie 4. Funkcja int() obcina (nie zaokrągla). Do zaokrąglania używaj round().
Przykład — konwersja typów
print(type(42))        # <class 'int'>
print(type("hello"))   # <class 'str'>
print(type(3.14))      # <class 'float'>
print(type(True))      # <class 'bool'>

# Konwersja
print(int(3.9))        # 3  (obcięcie!)
print(int("42"))       # 42
print(float("3.14"))   # 3.14
print(str(100))        # '100'
print(bool(0))         # False
print(bool(""))        # False
print(bool("coś"))     # True

# Sprawdzanie typu
x = input("Podaj liczbę: ")
print(type(x))         # <class 'str'> — zawsze!
x = int(x)
print(type(x))         # <class 'int'>

4. Funkcje matematyczne — abs(), round(), min(), max(), sum(), pow()

FunkcjaDziałaniePrzykład
abs(x)wartość bezwzględnaabs(-7) → 7
round(x, n)zaokrąglenie do n miejscround(3.567, 2) → 3.57
min(a, b, ...)najmniejsza wartośćmin(3,1,4) → 1
max(a, b, ...)największa wartośćmax(3,1,4) → 4
sum(iterable)suma elementówsum([1,2,3]) → 6
pow(x, y)potęgowanie x**ypow(2,8) → 256
divmod(a, b)iloraz i resztadivmod(7,2) → (3,1)
min() i max() z listą min([5, 2, 8]) i max([5, 2, 8]) — możesz przekazać listę jako jeden argument zamiast wielu osobnych wartości.
Przykład — funkcje matematyczne
print(abs(-15))          # 15
print(abs(7))            # 7

print(round(3.14159, 2)) # 3.14
print(round(2.5))        # 2  (banker's rounding!)
print(round(3.5))        # 4

print(min(10, 3, 7))     # 3
print(max(10, 3, 7))     # 10

oceny = [4, 5, 3, 4, 5]
print(min(oceny))        # 3
print(max(oceny))        # 5
print(sum(oceny))        # 21
print(sum(oceny)/len(oceny))  # 4.2

print(pow(2, 10))        # 1024

iloraz, reszta = divmod(17, 5)
print(iloraz, reszta)    # 3 2

5. Praca z sekwencjami — len(), range(), enumerate(), zip()

len(x) — zwraca długość sekwencji (listy, tekstu, krotki, słownika...).

range(start, stop, step) — generuje sekwencję liczb. Używana głównie w pętlach for.

  • range(5) → 0, 1, 2, 3, 4
  • range(2, 8) → 2, 3, 4, 5, 6, 7
  • range(0, 10, 2) → 0, 2, 4, 6, 8
  • range(10, 0, -1) → 10, 9, 8, ..., 1

enumerate(iterable) — zwraca pary (indeks, wartość). Przydatne gdy potrzebujesz i numeru, i wartości.

zip(a, b) — łączy dwie sekwencje w pary.

Uwaga na range() range(stop) — wartość stop jest wykluczona. range(5) daje 0–4, nie 0–5.
Przykład — len, range, enumerate, zip
tekst = "Python"
print(len(tekst))          # 6

lista = [10, 20, 30, 40]
print(len(lista))          # 4

# range w pętli
for i in range(5):
    print(i, end=" ")      # 0 1 2 3 4

for i in range(1, 6):
    print(i, end=" ")      # 1 2 3 4 5

# enumerate — indeks i wartość
owoce = ["jabłko", "gruszka", "śliwka"]
for i, owoc in enumerate(owoce):
    print(f"{i+1}. {owoc}")
# 1. jabłko  2. gruszka  3. śliwka

# zip — łączenie list
imiona = ["Ala", "Ola", "Ela"]
oceny  = [5, 4, 3]
for imie, ocena in zip(imiona, oceny):
    print(f"{imie}: {ocena}")

6. Sortowanie i filtrowanie — sorted(), reversed(), map(), filter()

FunkcjaDziałanieZwraca
sorted(x)posortowana kopia sekwencjilista
sorted(x, reverse=True)malejącolista
reversed(x)odwrócona sekwencjaiterator
map(func, x)stosuje funkcję na każdym elemencieiterator
filter(func, x)filtruje elementy spełniające warunekiterator
sorted() vs .sort() sorted(lista) zwraca nową listę, oryginał bez zmian. Metoda lista.sort() sortuje w miejscu — modyfikuje oryginalną listę i zwraca None.
Przykład — sorted, reversed, map, filter
liczby = [5, 2, 8, 1, 9, 3]

# sorted — nowa lista
posortowane = sorted(liczby)
print(posortowane)          # [1, 2, 3, 5, 8, 9]
print(liczby)               # [5, 2, 8, 1, 9, 3] bez zmian

malejaco = sorted(liczby, reverse=True)
print(malejaco)             # [9, 8, 5, 3, 2, 1]

# reversed — odwrócenie
for x in reversed(liczby):
    print(x, end=" ")       # 3 9 1 8 2 5

# map — zamiana typów z listy
tekst_liczby = ["1", "2", "3", "4"]
int_liczby = list(map(int, tekst_liczby))
print(int_liczby)           # [1, 2, 3, 4]

# filter — tylko parzyste
parzyste = list(filter(lambda x: x % 2 == 0, liczby))
print(parzyste)             # [2, 8]

7. Inne przydatne — chr(), ord(), isinstance(), id()

FunkcjaDziałaniePrzykład
chr(n)znak odpowiadający kodowi ASCII/Unicodechr(65) → 'A'
ord(znak)kod ASCII/Unicode znakuord('A') → 65
isinstance(x, typ)czy x jest danego typuisinstance(5, int) → True
id(x)adres obiektu w pamięciliczba całkowita
input()wczytuje tekst od użytkownikazwraca str
help(x)dokumentacja funkcji/obiektuw konsoli
chr() i ord() na egzaminie Przydatne przy szyfrowaniu i operacjach na znakach. Małe litery: a=97, z=122. Duże: A=65, Z=90. Cyfry: 0=48, 9=57.
Przykład — chr, ord, isinstance
# ASCII — znaki i kody
print(ord('A'))     # 65
print(ord('a'))     # 97
print(chr(65))      # A
print(chr(97))      # a

# Wypisanie alfabetu
for i in range(26):
    print(chr(65 + i), end=" ")
# A B C D E F ... Z

# Zamiana litery na wielką bez .upper()
litera = 'k'
wielka = chr(ord(litera) - 32)
print(wielka)       # K

# isinstance
print(isinstance(42, int))       # True
print(isinstance("hi", str))     # True
print(isinstance(3.14, int))     # False
print(isinstance(3.14, (int, float)))  # True

Zadania przykładowe z omówieniem

Zadanie 1 Statystyki listy liczb łatwe

Wczytaj 5 liczb całkowitych od użytkownika i umieść je na liście. Wypisz: sumę, średnią (2 miejsca po przecinku), minimum i maksimum oraz listę posortowaną rosnąco.

Rozwiązanie
liczby = []
for i in range(5):
    n = int(input(f"Liczba {i+1}: "))
    liczby.append(n)

suma    = sum(liczby)
srednia = suma / len(liczby)
minimum = min(liczby)
maksimum = max(liczby)

print(f"Suma:     {suma}")
print(f"Średnia:  {srednia:.2f}")
print(f"Min:      {minimum}")
print(f"Max:      {maksimum}")
print(f"Sorted:   {sorted(liczby)}")
Omówienie krok po kroku
  1. Wczytywanie do listy
    Pusta lista [], pętla range(5) wykonuje się dokładnie 5 razy. append() dodaje każdą wczytaną liczbę na koniec listy.
  2. sum() i len() razem
    sum(liczby) sumuje wszystkie elementy. Dzielimy przez len(liczby) — długość listy. To standard obliczania średniej arytmetycznej.
  3. min() i max() z listą
    Przekazujemy całą listę jako jeden argument. Python sam przejdzie przez wszystkie elementy.
  4. sorted() nie zmienia oryginału
    Wypisujemy sorted(liczby) — zwraca nową posortowaną listę. Oryginalna liczby pozostaje niezmieniona.
Zadanie 2 Tabela wyników z wyrównaniem średnie

Masz dwie listy: imiona uczniów i ich wyniki punktowe (0–100). Wypisz tabelę z numerem, imieniem wyrównanym do lewej (15 znaków) i wynikiem wyrównanym do prawej (5 znaków). Na końcu wypisz najlepszy i najgorszy wynik.

Rozwiązanie
imiona  = ["Kasia", "Marek", "Zofia", "Piotr"]
wyniki  = [87, 92, 74, 88]

print(f"{'Nr':<4} {'Imię':<15} {'Wynik':>5}")
print("-" * 26)

for i, (imie, wynik) in enumerate(zip(imiona, wyniki), 1):
    print(f"{i:<4} {imie:<15} {wynik:>5}")

print("-" * 26)
print(f"Najlepszy wynik: {max(wyniki)}")
print(f"Najgorszy wynik: {min(wyniki)}")
print(f"Średnia:         {sum(wyniki)/len(wyniki):.1f}")
Omówienie krok po kroku
  1. Formatowanie kolumn
    {'Imię':<15} — tekst wyrównany do lewej w polu 15 znaków. {'Wynik':>5} — do prawej w polu 5 znaków. Dzięki temu kolumny są równe niezależnie od długości imienia.
  2. zip() z enumerate()
    zip(imiona, wyniki) łączy obie listy w pary. enumerate(..., 1) dodaje licznik zaczynający od 1. Rozpakowujemy wszystko w jednej pętli: i, (imie, wynik).
  3. Separator — mnożenie stringa
    "-" * 26 tworzy linię 26 myślników. To szybszy i czytelniejszy sposób niż ręczne wpisywanie znaków.
  4. max(), min(), sum() na końcu
    Obliczamy statystyki z całej listy wyniki — nie potrzeba pętli, funkcje wbudowane robią to automatycznie.
Zadanie 3 Szyfr Cezara — przesunięcie ASCII średnie

Wczytaj tekst (same małe litery) i liczbę przesunięcia (1–25). Zaszyfruj tekst przesuwając każdą literę o podaną liczbę pozycji w alfabecie. Spacje pozostaw bez zmian. Wypisz zaszyfrowany tekst.

Rozwiązanie
tekst       = input("Tekst (małe litery): ")
przesuniecie = int(input("Przesunięcie (1-25): "))

zaszyfrowany = ""

for znak in tekst:
    if znak == " ":
        zaszyfrowany += " "
    else:
        kod    = ord(znak)
        nowy   = (kod - ord('a') + przesuniecie) % 26
        zaszyfrowany += chr(nowy + ord('a'))

print(f"Zaszyfrowany: {zaszyfrowany}")
Omówienie krok po kroku
  1. ord() — zamiana litery na liczbę
    ord(znak) daje kod ASCII litery, np. ord('a') = 97. Odejmujemy ord('a') żeby otrzymać pozycję w alfabecie: a=0, b=1, ..., z=25.
  2. Modulo 26 — zawijanie alfabetu
    % 26 powoduje zawinięcie: po 'z' wracamy do 'a'. Bez tego chr() wychodziłby poza zakres liter.
  3. chr() — zamiana liczby na literę
    Dodajemy z powrotem ord('a') żeby przejść z pozycji alfabetycznej (0–25) na kod ASCII (97–122), a potem chr() zamienia kod na znak.
  4. Spacja bez zmian
    Warunek if znak == " " pomija przetwarzanie spacji. To ważne — szyfrujemy tylko litery.

Zadania do samodzielnego rozwiązania

Każde zadanie da się rozwiązać używając wyłącznie funkcji wbudowanych omówionych na tej stronie.

1★☆☆

Długość słów

Wczytaj trzy słowa. Wypisz je w kolejności od najkrótszego do najdłuższego wraz z ich długościami.

Wskazówka: len(), sorted() z key=len
2★☆☆

Zaokrąglenia

Wczytaj liczbę zmiennoprzecinkową. Wypisz ją zaokrągloną do 0, 1, 2 i 3 miejsc po przecinku.

Wskazówka: round(x, n)
3★★☆

Tabela ASCII

Wypisz tabelę: litera i jej kod ASCII dla wszystkich małych liter (a–z) w 3 kolumnach.

Wskazówka: chr(), ord(), range(26)
4★★☆

Konwerter listy tekstów

Masz listę: ["3", "1", "4", "1", "5", "9"]. Bez pętli for zamień ją na listę liczb całkowitych i wypisz sumę oraz maksimum.

Wskazówka: map(int, lista), list()
5★★☆

Numerowana lista zakupów

Masz listę produktów. Wypisz ją jako numerowaną listę (1, 2, 3...) używając enumerate(). Produkty posortuj alfabetycznie przed wypisaniem.

Wskazówka: sorted(), enumerate(lista, 1)
6★★★

Deszyfrowanie Cezara

Napisz program odwracający szyfr Cezara — wczytaj zaszyfrowany tekst i przesunięcie, wypisz odszyfrowany tekst. Sprawdź czy działa dla przesunięcia 13 (ROT13).

Wskazówka: odejmij przesunięcie zamiast dodawać, użyj % 26