Az előadás nagyvonalakban a hivatalos Python tutorial 3.7-et, illetve 3.8-at követi, de lehet használni a w3schools tutorial-ját is (amiben online gyakorlatok és tesztek is vannak).
A Python egy olyan általános körben használható magas szintű programozási nyelv, aminek az egyik alapelve az olvasható kód írása egy nagyon tiszta szintaxis használatával. 1991-ben alkotta meg Guido Van Rossum.
Nevét a Monthy Python ihlette, nem az állat.
python ú.n. interpretált (interpreteres) nyelv (Interpretált nyelv végrehajtja az utasításokat anélkül, hogy közvetlenül gépi kódra fordítaná azt – ellentétben a fordítóprogramos nyelvekkel) Több módon is futtathatunk python kódot.
Parancssorból futtatható, a Python interaktív interpretere:
$ python3
Ez egy saját prompt-ot ad, ahová közvetlenül írhatunk Python-kódot.
De lefuttathatunk parancssorból egy létező python file-t is (.py kiterjesztésű file):
$ python3 hello.py
Ekkor lefut a program és ha van szöveges kimenete a programnak az látható lesz a parancssorban.
Windows:
C:\Users\YourName> py
or maybe instead of py you may write python(.exe).
C:\Users\YourName> py Desktop\hello.py
A Jupyter egy böngészőn keresztül használható fejlesztői környezet, többek közöt python-hoz. Ezt lehet saját gépről is használni (ha telepítve van), de gyakorlaton a jupyter.math.bme.hu-t fogjuk használni. Ez ugyan olyan, mintha a saját gépről kiadnánk a jupyter notebook parancsot.
A Jupyter maga egy webes felhasználói felület, a háttérben Python (és akár Sage, R vagy más) interpretert ( kernel ) futtat.
Az Anaconda disztribúciót javaslom. Van minden főbb asztali oprendszerre (Linux, Mac, Windows)
Ez nagyon sok mindent tartalmaz, pl. parancssori (python, ipython), notebook (jupyter) és grafikus (Spyder) környezetet, statisztikai programnyelvet (R), és sok hasznos függvénykönytárat.
Az objektumok a nyelv alapelemei, ezekkel fogunk dolgozni. Minden objektumnak van típusa. A következő típusokkal kezdjük:
int (egész): 2354, -12float (lebegőpontos szám): 1.0, -23.567, 2.3E4bool (logikai): True, Falsestr (karakterlánc, sztring): "Pál fogyó IQ-jú kun exvő, ím dühös a WC-bűzért.", "öt hűtőházból kértünk színhúst", "ハンガリーからのご挨拶", "هنغاريا", "Венгрия", "헝가리", "הונגריה", "匈牙利", "ฮังการี",Dolgok típusát lekérdezhetjük a type paranccsal.
type(5.0)
Az objektumok műveletekkel összekapcsolva kifejezéseket adnak, melyek kiértékelve valamilyen típusú objektumot adnak. Az egész és a lebegőpontos műveletek:
a + b összeadása - b kivonása * b szorzása / b osztás a // b egész osztása % b maradékképzésa ** b hatványozás (NEM a ^ b, mint a sage-ben!)a == b, a < b, a > b, a <= b, a >= b, a != b eredményük boolLogikai műveletek bool-típusúak közt:
a and b, „és”a or b, „megengedő vagy” not a, „nem”a != b, „kizáró vagy” (exclusive or, xor)Stringeken alapvető műveletek:
a + b, konkatenálása in b, tartalmazás vizsgálat (eredménye bool)5 + 11
2 ** 2514
12 ^ 7 # bitenkénti kizáró vagy (XOR): 1100 ^ 0111 = 1011
# csak az érdekesség kedvéért bitenkénti OR és AND:
12 | 7, 12 & 7
a = 14
b = a - 10
a * b
54 > 12
b <= 0
54 > 12 or b <= 0
54 > 12 and b <= 0
(1 < 2) != (3 == 3) # != exclusive or
s = "ハンガリー"
"ハン" in s
s = "hon"
s = 'Pyt' + s
s
Három módon adhatunk meg karakterláncokat:
s = "kiskutya"
type(s)
s = 'kiskutya'
type(s)
s = """Volt egyszer egy kiskutya.
Elment a vásárba."""
type(s)
s
Itt a vezérlő karaketerek (\n a sorvége jel), a print utasítás a vezérlő karaktereket is megjeleníti:
print(s)
Az első kettőnek kényelmi szerepe van, mert amelyik idézőjelet nem használjuk a string jelzésére azt használhatjuk a stringben. Például:
print("'Egyik' és " + '"másik" idézőjel.')
sztring = 'Van ilyen: \', meg ilyen: ".'
sztring
print(sztring)
A harmadik változatban használhatunk sortörést és ez a stringben is sortörésként fog megjelenni. Míg a többi jelöléssel sortörést a \n kifejezéssel tudunk tenni.
További speciális (ún. escape) karakterek stringekben: \\\\ (\\), \\\' ('), \\\" ("), \n (új sor), \t (tab)
print("""első sor,
második sor""")
print("\home\name")
print(r"\home\name")    # raw text, no escape sequences
Sorbeli (inline) megjegyzés #-jellel, többsoros megjegyzésre a """-es karakterlánc használható, mivel bármely karakterlánc megjegyzés, ha csak önmagában áll (nem értékadásban).
1 + 1  # my first Python command
"""The next code 
is really
very simple:"""
1 + 2
Interaktív módban (akár parancssori, akár itt a Jupyterben) az egyes cellák eredménye az utolsó érték ami kiértékelődött, de ha futtatunk egy korábban megírt python programot, akkor csak az lesz kiírva, amit meg akarunk jeleníteni (pl. a print() függvénnyel.)
5 + 8
5 + 7
a = 5
print(a)
a = 15
a + 1
print(a * 2)
a
print("Volt egyszer egy %s, elment a vásárba." % "nagykutya")
Ha egy stringben %s szerepel akkor utána % jellel behelyettesíthetünk erre a pozícióra egy másik stringet. Több behelyettesítés esetén:
print("Volt %s egy %s, elment a vásárba." % ("egyszer", "kiskutya"))
Nem csak stringeket lehet behelyettesíteni, egész vagy lebegőpontos számokat is lehet:
print("""A %d egy decimális egész (integer), 
a %f pedig egy lebegőpontos (floating point) szám.""" % (23, 1.0/3))
"%s! Megkaptad a %d pontot!" % ("Tomi", 100)
Az hogy mi történjen a sor végén, az end= opcióval adható meg. Értéke alapértelmezésben '\n'. Egy üres print egyszerűen új sort kezd.
print(1, 3.14, "kutya")
print("macska", end=' ')  # egy szóköz
print("teve", end='')     # üres string
print("gel")
print()
print("vége")
input()
nev = input("Hogy hívnak? ")
print("Szia %s!\nÖrülök, hogy megismerkedtünk!" % nev)
input() > 10    # amit beolvas, az string!!!
int(input()) > 10    # konvertáljuk egésszé
type(input())
x = float(input())
if x < 0:
    print("ez a szám")
    print("negatív")
elif x == 0:
    print("nulla")
elif x == 1:
    print("egy")
else:
    print("pozitív, de nem egy")
Az elif-ek száma tetszőleges, de se az elif se az else megadása nem kötelező.
Ha az eredeti feltétel teljesül (igazra értékelődik), akkor az ő blokkjába eső (alatta behúzott) kód fut le, ha nem teljesül akkor az első olyan elif blokk fut le aminek a feltétele igaz, ha ezek se igazak akkor az else ág blokkja fut le, feltéve hogy van.
A behúzás (indentálás) legelterjedtebb mértéke a négy szóköz.
if x >= 10 or x <=-10:
    print("legalább kétjegyű a szám")
n = 1000
a = 1
while a ** 3 <= n:
    print(a ** 3, end=' ')
    a = a + 1
print("vége")
A while ciklus blokkja újra és újra lefut, amíg teljesül a ciklus feltétele.
Ciklusokat és elágazásokat egymásba ágyazhatunk:
A híres Collatz- vagy $3n+1$-probléma (megoldatlan):
n = int(input())
while n != 1:
    print(n, end=' ')
    if n % 2 == 0:
        n = n // 2
    else:
        n = n * 3 + 1
print(n)
Ezt megtehetjük akárhány mélységig (ciklusok is ágyazhatók egymásba):
n = int(input())
if n > 0:
    while n != 1:
        print(n, end=' ')
        if n % 2 == 0:
            n = n // 2
        else:
            n = n * 3 + 1
    print(n)
else:
    print("Pozitív egész számot adjunk meg!")
A fenti kód már azt is teszteli, hogy a felhasználó pozitív egész számot adott-e meg. Változtassunk a kódon úgy, hogy többször egymás után is lefusson, és 0 érték megadása esetén álljon le! Ehhez a break parancsot használhatjuk, mellyel kiugorunk a ciklusból!
while True:
    n = int(input())
    if n > 0:
        while n != 1:
            print(n, end=' ')
            if n % 2 == 0:
                n = n // 2
            else:
                n = n * 3 + 1
        print(n)
    elif n == 0:
        break
    else:
        print("""Nemnegatív egész számot adjunk meg,
a 0-val befejezzük a futtatást!""")
Ha több ciklus van egymásba ágyazva, akkor a break a legbelső ciklusból ugrik ki, melynek blokkjában van.