← Strona główna

16 — Cheatsheety i druk

Gotowe ściągawki do wydruku — składnia, metody, wzorce egzaminacyjne.

Egzamin i wsparcie

Typy danych i konwersja

Podstawowe typy
intliczba całkowita
floatliczba z przecinkiem
strtekst (string)
boolTrue / False
listlista [ ]
tuplekrotka ( )
dictsłownik { : }
setzbiór { }
NoneTypeNone
Konwersja
int("42")→ 42
int(3.9)→ 3 (obcięcie!)
float("3.14")→ 3.14
str(100)→ "100"
bool(0)→ False
bool("")→ False
list("abc")→ ['a','b','c']
tuple([1,2])→ (1, 2)
set([1,1,2])→ {1, 2}
Falsy values
0zero całkowite
0.0zero float
""pusty string
[]pusta lista
()pusta krotka
{}pusty słownik
set()pusty zbiór
Nonebrak wartości
Falsefałsz

Metody stringów i formatowanie

Metody str
.upper()WIELKIE LITERY
.lower()małe litery
.strip()usuń białe znaki z końców
.split(sep)podziel po sep → lista
sep.join(lista)złącz listę przez sep
.replace(a, b)zamień a na b
.find(s)indeks lub -1
.count(s)ile razy s w stringu
.startswith(s)czy zaczyna się od s
.endswith(s)czy kończy się na s
.isdigit()czy same cyfry
.isalpha()czy same litery
.isalnum()cyfry lub litery
.isupper()czy wielkie litery
.islower()czy małe litery
len(s)długość stringa
f-string — formatowanie
f"{x}"wartość zmiennej
f"{x:.2f}"2 miejsca po przecinku
f"{x:.0f}"bez miejsc po przecinku
f"{x:8}"pole szerokości 8
f"{x:>8}"do prawej, sz. 8
f"{x:<8}"do lewej, sz. 8
f"{x:^8}"wyśrodkuj, sz. 8
f"{x:08}"uzupełnij zerami
f"{x:,}"separator tysięcy
f"{x:.1%}"procent 1 miejsce
f"{x!r}"repr() wartości
Slice — wycinki
s[0]pierwszy znak
s[-1]ostatni znak
s[1:4]znaki 1, 2, 3
s[:3]pierwsze 3
s[2:]od 2 do końca
s[::-1]odwrócony string
s[::2]co drugi znak

Listy, słowniki i zbiory — metody

Metody list
.append(x)dodaj na koniec
.insert(i, x)wstaw na pozycję i
.extend(l)dodaj elementy z l
.remove(x)usuń pierwsze x
.pop()usuń i zwróć ostatni
.pop(i)usuń i zwróć i-ty
.index(x)indeks x
.count(x)ile razy x
.sort()sortuj w miejscu
.reverse()odwróć w miejscu
.copy()płytka kopia
.clear()wyczyść
Metody dict
.keys()widok kluczy
.values()widok wartości
.items()widok par (k,v)
.get(k)wartość lub None
.get(k, d)wartość lub d
.pop(k)usuń i zwróć
.update(d2)dodaj/nadpisz z d2
.setdefault(k,v)ustaw jeśli brak
.copy()płytka kopia
.clear()wyczyść
Operacje na zbiorach
A | Bsuma zbiorów
A & Bprzecięcie
A - Bróżnica A\B
A ^ Bróżnica sym.
A <= BA ⊆ B (podzbiór)
.add(x)dodaj x
.discard(x)usuń (bez błędu)
.remove(x)usuń (błąd gdy brak)
.isdisjoint(B)czy rozłączne

Funkcje wbudowane — ściągawka

Matematyczne
abs(x)wartość bezwzgl.
round(x, n)zaokrąglij do n miejsc
min(a, b, ...)minimum
max(a, b, ...)maksimum
sum(iter)suma
pow(x, y)x do potęgi y
divmod(a, b)(iloraz, reszta)
Sekwencje i iteracja
len(x)długość
range(n)0 do n-1
range(a,b,s)od a do b-1 co s
enumerate(x)(i, elem) pary
zip(a, b)łączy sekwencje
sorted(x)posortowana kopia
reversed(x)odwrócony iterator
map(f, x)zastosuj f na x
filter(f, x)filtruj przez f
ASCII i typy
ord("A")→ 65
chr(65)→ "A"
type(x)typ obiektu
isinstance(x,T)czy x jest T
id(x)adres w pamięci
input(prompt)wczytaj string
print(*args)wypisz
help(x)dokumentacja

Algorytmy — wzorce do zapamiętania

Sortowanie bąbelkowe
def bubble_sort(lista):
    n = len(lista)
    for i in range(n - 1):
        for j in range(n - 1 - i):
            if lista[j] > lista[j+1]:
                lista[j], lista[j+1] = \
                lista[j+1], lista[j]
Sortowanie przez wybieranie
def selection_sort(lista):
    n = len(lista)
    for i in range(n - 1):
        min_idx = i
        for j in range(i+1, n):
            if lista[j] < lista[min_idx]:
                min_idx = j
        lista[i], lista[min_idx] = \
        lista[min_idx], lista[i]
Sortowanie przez wstawianie
def insertion_sort(lista):
    for i in range(1, len(lista)):
        klucz = lista[i]
        j = i - 1
        while j >= 0 and lista[j] > klucz:
            lista[j+1] = lista[j]
            j -= 1
        lista[j+1] = klucz
Wyszukiwanie binarne
def binarne(lista, szukana):
    lewy, prawy = 0, len(lista) - 1
    while lewy <= prawy:
        s = (lewy + prawy) // 2
        if lista[s] == szukana:
            return s
        elif lista[s] < szukana:
            lewy = s + 1
        else:
            prawy = s - 1
    return -1
NWD i NWW
def nwd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def nww(a, b):
    return a * b // nwd(a, b)
Silnia i Fibonacci
def silnia(n):          # rekurencyjna
    if n == 0: return 1
    return n * silnia(n-1)

def fib(n):             # iteracyjna O(n)
    if n <= 1: return n
    a, b = 0, 1
    for _ in range(2, n+1):
        a, b = b, a+b
    return b

Pliki i Flask — wzorce

Pliki — wzorce odczytu i zapisu
# Odczyt linii po linii
with open("plik.txt", "r",
          encoding="utf-8") as f:
    for linia in f:
        linia = linia.strip()

# Wczytaj liczby z pliku
with open("dane.txt", "r",
          encoding="utf-8") as f:
    liczby = [int(l.strip()) for l in f
              if l.strip()]

# Zapis do pliku
with open("wynik.txt", "w",
          encoding="utf-8") as f:
    f.write(f"Wynik: {wynik}\n")

# CSV — odczyt przez DictReader
import csv
with open("dane.csv", "r", newline="",
          encoding="utf-8") as f:
    for wiersz in csv.DictReader(f):
        print(wiersz["Imię"])

# CSV — zapis przez DictWriter
with open("wynik.csv", "w", newline="",
          encoding="utf-8") as f:
    w = csv.DictWriter(f,
        fieldnames=["id","imie","wynik"])
    w.writeheader()
    w.writerows(dane)
Flask — minimalny szkielet aplikacji
from flask import (Flask, render_template,
                   request, redirect, url_for)
app  = Flask(__name__)
dane = []   # "baza danych" w pamięci

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        # Pobierz dane z formularza
        pole = request.form.get('pole','')
        if pole:
            dane.append(pole)
        return redirect(url_for('index'))
    # GET — wyświetl stronę
    return render_template('index.html',
                           dane=dane)

@app.route('/usun/')
def usun(i):
    if 0 <= i < len(dane):
        dane.pop(i)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

# Jinja2 w szablonie:
# {{ zmienna }}
# {% if warunek %}...{% endif %}
# {% for x in lista %}...{% endfor %}
# {{ url_for('nazwa_funkcji') }}

Częste błędy i złożoność algorytmów

Typowe wyjątki
WyjątekPrzyczyna
IndexErrorindeks poza zakresem listy
KeyErrorbrak klucza w słowniku
ValueErrorint("abc"), float("x")
TypeErrorzły typ argumentu
ZeroDivisionErrordzielenie przez 0
FileNotFoundErrorbrak pliku
RecursionErrorza głęboka rekurencja
AttributeErrorbrak atrybutu/metody
NameErrorniezdefiniowana zmienna
Złożoność algorytmów
AlgorytmZłożoność
Dostęp do listy [i]O(1)
x in set/dictO(1)
x in listO(n)
Wyszukiwanie linioweO(n)
Wyszukiwanie binarneO(log n)
Bubble / Selection / Insertion sortO(n²)
Merge sort / TimsortO(n log n)
Fibonacci naiwnyO(2ⁿ)
Fibonacci iteracyjnyO(n)
NWD (Euklides)O(log n)