Úvod do jazyka Python
- Skriptovací jazyk
- Hybridní jazyk (kompilace do byte kódu a jeho následná interpretace)
- Dynamický typový systém
- Objektový a funkcionální
- Syntaxe určená odsazením
- Platformová nezávislost
- Skripty, Programování systémů (POSIX), GUI, server side, integrace komponent, databáze, hry, výzkum, ...
- Používán především pro prototypování (Google, Apple, Seznam.cz, Dropbox, Nasa, ...)
- Pojmenován po Monty Python
Jaká verze jazyka (2.7 vs 3.X)
Většina existujících programů je v Python 2.7 a nižšší. Ostré nasazení verze 3.X komplikuje především nekompatibilita těchto verzí. V dnešní době jsou straší verze na ústupu. V roce 2020 končí podpora 2.7.
Instalace a volání programu.
Instalaci každý zvládne sám.
Implementace jazyka
CPython, Jython, IronPython, Stackless a PyPy
IDE
Emacs, Visual Studio Code, Spyder, Atom, SublimeText 3, Jupyter notebook, prakticky cokoliv
-
úkol 0
Vytvořte program v libovolném jazyce, který převede vstupní soubor ve formátu
dat
(formát používaný v data miningu pro uložení binárních tabulkových dat) do formátucsv
. Výstup programu je uložen do souboru. Například:# soubor in.dat obsahuje: 5 2 1 3 4 2 3 5 3 4 # po ukonceni programu soubor out.csv obsahuje: 1, 2, 0, 0, 5 0, 0, 3, 4, 0 0, 2, 3, 0, 0 0, 0, 0, 0, 5 0, 0, 3, 4, 0
# reseni v jazyce Python
file_in = open('in.dat', 'r')
M = []
# sila jazyka
for line in file_in:
M.append([int(i) for i in line.strip().split(' ')])
# sila mysleni
m = max(map(max, M))
file_in.close()
file_out = open('out.csv', 'w')
# opet sila jazyka
for i in M:
X = [0]*m
for j in i:
X[j-1] = j
# no fuj, ale funguje :-)
file_out.write(str(X)[1:-1]+'\n')
file_out.close()
Užitečné odkazy
Jupyter notebook
Jupyter notebook umožňuje psát a vyhodnocovat kód ve webovém prohlížeči. Na seminářích jej budeme používát pro demonstraci. Pro samotné programování je ale lepší zvolit plnohodnotné IDE.
Zadání
-
úkol 1
Zprovozněte jazyk Python a libovolné IDE. Vyzkoušejte hello world program.
print("Hello world!")
-
úkol 2
Implementujte jednoduchou sparse data structure (Úmění programování, D. E. Knuth, strana 302).
# reseni Matrix = {} # pouzijeme slovnik # tuples jako index ve strukture # na tomto prikladu je krasne videt uzitecnost n-tic, seznam v teto situaci pouzit nelze Matrix[(1, 2)] = 11 Matrix[(5, 8)] = 22 print(Matrix) # get metoda print(Matrix.get((1, 2), 0)) print(Matrix.get((3, 3), 0))
-
úkol 3
# zjistete prunik seznamu L1 a L2 L1 = [1, 2, 3, 4, 5] L2 = [4, 5, 6, 7, 8]