Proč právě Python?
Python je moderní programovací jazyk, jehož popularita stále roste. Jeho autorem je Guido van Rossum, který jej vymyslel v roce 1989. Jazyk Python je používán například v systémech firmy Google, v aplikacích YouTube, Dropbox, Mozilla, Quora, Facebook nebo na platformě Rasperry Pi.
- Je multiplatformní – MS Windows, Linux, nebo MacOS
- Je free – pod licencí OpenSource
- Jednoduchá syntaxe(zápis a pravidla zápisu)
- Neexistují deklarace – nemusím dopředu říkat typ proměnné
- Velká komunita programátorů
Kde PYTHON využijeme?
- pro programování webových aplikací
- programování databází
- pro programování (vývoj) zařízení pro výrobu (například Arduino)
Instalace Pythonu
Instalační balíček vývojového prostředí lze jednouše stáhnout ze stránek https://www.python.org/downloads/
Základní prostředí pro programování
Alternativní prostředí pro programování v Python
online editor mu pro programování Microbitu | https://python.microbit.org/v/2.0 |
online prostředí repl.it | https://repl.it/repls/ImaginativeInternalCompilers#main.py |
online prostředí Online GDB | https://www.onlinegdb.com/ |
Výpis textu
Výpis textu, výsledek matematické operace, výpis z databáze můžeme provádět příkazem PRINT.
print("Programujeme v Pythonu")
print ("Python"+" Nazdar"+" Čau")
print(7+5)
a="AHOJ"
b="nazdar"
print("Dnešní pozdravy jsou",a,b)
Text s komentářem
Často potřebujeme při programování zapsat svůj vlastní komentář. Slouží nám k lepší orientaci v kódu a k našim poznámkám, které se nám po delší době mohou náramně hodit. Zlepší se tak čitelnost kódu a komentáře nemají vliv na funkčnost programu.
#Zde se zapisuje komentář
print("Python je programovací jazyk")
print("Krásné je žít!") #Zde mohu také zapsat komentář
Operátory
Operátory se používají k provádění operací s proměnnými a hodnotami. Jedná se především o oprátory početních operací.
+ | sčítání |
– | odčítání |
* | násobení |
/ | dělení |
Proměnné
Proměnná je místo v paměti, kde uchováváme nějaké hodnoty. Proměnné se využívají ve všech programovacích jazycích a pokud zavádíme proměnnou, říkáme tomu DEKLARACE proměnné. V Pythonu nepoužíváme žádný znak pro deklaraci, jiné programovací jazyky musí proměnnou dopředu deklarovat speciálním znakem (klíčovým slovem). Například PHP používá znák $, JavaSript klíčové slovo var).
Za proměnnou můžeme zvolit v podstatě libovolné slovo, musíme ale dácat pozor na následující pravidla:
- Python rozlišuje malá a velká písmena(cislo_a x CISLO_a)
- pokud v názvu potřebujete mezeru, použijte podtržítka
- raději nevyužívejte diakritiky
- nepoužívejte v názvech slova, která se používají v programových konstrukcích:
- false
- if
- fore
- while
- del
- else
- …
Typ proměnné
Proměnná může uchovávat hodnoty rozdílných typů. Jedná se především o:
- číslo
- desetinné číslo
- řetězec(text)
- …
Jak zjistit typ proměnné?
x=5
print(type(x))
Náhodné číslo
import random #naimportuje modul random
print(random.randrange(1, 10))
Podmínky
a = 200
b = 200
if (b > a):
print("b je větší než a")
if (b == a):
print("b je rovno a")
else:
print("b je menší než a")
Cykly(smyčky)
Cyklus se vykonává v programu tak dlouho, dokud bude splněna nějaká podmínka. Lze hledat souvislost s příklady v běžném životě:
- Při svém večerním tréningu budu běhat na stadiónu tolik koleček, dokud neuběhnu 5 km.
- Řekni 5x „Programuji v Pythonu“.
Při programování cyklu musíme dbát na to, aby byl cyklus vždy konečný. To zajistíme tak, že po každém cyklu zvýšíme hodnotu proměnné o 1 (i+=1).
V PYTHONU je cyklus zabezpečen dvěma příkazy:
- WHILE
- FOR
i = 1
while i < 20:
print(i)
i += 1
Smyčka ve skriptovacím jazyce PHP
<?php
$cislo = 1;
while($cislo <= 10) {
echo $cislo
$cislo++;
}
?>
Cyklus pomocí FOR
Smyčku FOR využijeme nejčastěji v případě, kdy víme, kolikrát se cyklus bude opakovat. Pokud například chceme vypsat všechny žáky ve třídě, podle počtu žáků víme, že se cyklus zopakuje například 25x.
for a in range(10):
print("Ahoj")
#Cyklus se vykoná 10x, vypíše se tedy 10x slovo "Ahoj". Současně použijeme funkci RANGE(), která vrací posloupnost čísel od 0-zadané číslo (range(10) tedy vrací čísla: 0,1,2,3,4,5,6,7,8,9,10)
Funkce RANGE
Funci RANGE velmi často využíváme právě ve spojení s cyklem FOR. Jedná se o funkci, která vytvoří posloupnost čísel od 0 do zadaného čísla.
x = range(10)
for n in x:
print(n)
#V (v příkladu se mění hodnota řídící proměnné (n), po každém projítí cyklem se zvýší o 1)
#analogický příklad
for x in range(5):
print("PRAHA")
for i in range(10):
print("Nazdar")
#Cyklus se vykoná 10x a pokaždé se vypíše "Nazdar". Současně použijeme funkci RANGE(), která vrací posloupnost čísel od 0-zadané číslo (range(10) tedy vrací čísla: 0,1,2,3,4,5,6,7,8,9,10)
#analogický příklad
y = 1
z = 2
for m in range(10):
print(m, y, z)
for x in [3,7,10,50,100,4,8,12]:
print(x)
#Cyklus FOR se dá využít i ve spojitosti se seznamy
trida=["Ivana","Josef","František", "Daniel","Lukáš"]
for f in trida:
print(f)
#Cyklus FOR se dá využít i ve spojitosti se seznamy
for x in [3, 7, 10]:
print(x)
Proměnná s více hodnotami – seznam
Jedná se o zvláští typ proměnné, která může mít více hodnot. Hodnoty se zapisují do hranatých závorek. Seznamy jsou jednou ze čtyř předdefinovaných typů proměnné, která slouží k ukládání kolekce dat.
ovoce = ["jablko", "banán", "třešeň"]
Konkrétní proměnnou pak vypíšeme pomocí INDEXU. Index se počítá od nuly. první hodnota(jablko) má tedy index=0, druhá hodnota(banán) má index=1, …
ovoce = ["jablko", "banán", "třešeň"]
print(ovoce[0])
nabytek=["židle","stůl","skříň","polička","otoman"]
print(nabytek[3])
Pokud potřebujeme vypsat kolik hodnot má seznam, použijeme funkci len().
znacky = ["Volvo", "Škoda", "BMW", "Kia", "Ford"]
print(len(znacky))
Práce se seznamem v prostředí MAKECODE
Práce se seznamem – přidání hodnoty na konec seznamu
auta = ["BMW", "VOLVO", "ŠKODA"]
auta.append("OPEL")
print(auta)
Práce se seznamem – vytvoření seznamu, zapsání hodnoty do INPUT, přidání hodnoty na konec seznamu
auta = ["BMW", "VOLVO", "ŠKODA"]
auta.append("OPEL")
print(auta)
Práce se seznamem – spojení dvou seznamů
auta = ["BMW", "VOLVO", "AUDI"]
ceska_auta=["ŠKODA", "TATRA", "KAIPAN"]
auta.extend(ceska_auta)
print(auta)
Práce se seznamem – obsahuje seznam hodnotu?
auta2 = ["BMW", "VOLVO", "AUDI"]
print("BMW" in auta2) # kontrola existence prvku
#vypíše se "TRUE"
Funkce
Funkce jsou kusy (bloky) kódu, které se vykonají, pokud je v kódu zavoláte jejich jménem. Výhodou je, že se mohou vykonat opakovaně a nemusí se stále a znovu programovat. Funkce většinou vrací nějakou hodnotu.
Představte si například pračku prádla. Pokud zmáčknete nějaký knoflík na panelu pračky, dojde ke spuštění příslušné funkce: . předeprání prádla . čas spuštění praní . dětský zámek . praní bavlny . ...
Vrácení hodnoty nám zajistí klíčové slovo return, po vrácení hodnoty se činnost funkce ukončí. Funkce se definuje klíčovým slovem def, dále následuje název funkce
def mojefunkce():
print("Dnes je krásný den")
mojefunkce()
Funkce může být:
- vlastní – programuji si ji sám
- vestavěná – je součástí programovacího jazyka. Například funkce pracující s časem.
Funkce může být
- s parametrem – parametr zadáváme před provedením funkce
- bez parametru
Parametry se uvádí za názvem funkce do kulatých závorek.
def vypis_jmena(krestnijmeno):
return(krestnijmeno)
print (vypis_jmena("Emil"))
print (vypis_jmena("Karel"))
Funkce pro součet dvou čísel
def soucet(a,b):
return(a+b)
print (soucet(10,20))
Funkce pro součin dvou čísel
def soucin(a,b):
return(a*b)
print (soucin(10,20))
Funkce pro součet čtyř čísel
def soucet(a,b,c,d):
return(a+b+c+d)
print (soucet(10,20,30,40))
Výpis vnitřní funkce pro čas a datum
Nejprve je třeba naimportovat modul „datetime“
import datetime
print(datetime.datetime.now())
Funkce INPUT
Jedná se o metodu, která vyžaduje nějaký vstup od uživatele. Například může uživatel zadat neznámé hodnoty pro výpočet nějakého vzorce.
Metoda žádá od uživatele vstup – jeho jméno a následně program vypíše „Tvoje jméno je …“
name = input(„Zadej svoje jméno“)
print („Tvoje jméno je “ +(name))
Obsah obdélníka
stranaa=int(input(„strana a“))
stranab=int(input(„strana b“))
obsah=(stranaa*stranab)
print („obsah obdélníka je:“)
print (obsah)
Zaokrouhlení
Funkce ROUND zaokrouhlí číslo podle zadaných parametrů.
cislo = round(9.34589)
print(cislo)
#zaokrouhlí na nejbližší celé číslo 9
x=3.6
x+=4
print(round(x))
#zaokrouhlí na 8
cislo = round(10.23543, 2)
print(cislo)
#zaokrouhlí na 2 desetinná místa
Zápis do souboru
Python obsahuje několik funkcí, které umí pracovat se soubory. Především je to:
- vytváření souborů
- mazání souborů
- čtení ze souboru
- aktualizace souborů
Klíčovou funkcí pro práci se soubory je funkce
open ()
Funkce open() má dva paremetry:
- jméno souboru se kterým pracujeme
- režim v jakém budeme se souborem pracovat
- „r“ – čtení
- „a “ – připojení k souboru
- „w“ – psaní
- „x“ – vytvoření souboru
Syntaxe
jmena = open("pokus.txt")
To je to samé, jako bychom napsali
jmena = open("pokus.txt", "rt")
Zápis do souboru
Pro zápis do souboru se využívá funkce
write()
Čtení ze souboru
Pro čtení ze souboru se využívá funkce
read()
soubor = open("jmena.txt", "a")
soubor.write("Karel,")
soubor.close()
#dále otevře soubor a přečte jej
soubor = open("jmen.txt", "r")
print(soubor.read())
Kreslení v Python
import tkinter
platno = tkinter.Canvas()
platno.pack()
platno.create_line(10, 10, 210, 10)
import tkinter
platno = tkinter.Canvas()
platno.pack()
platno.create_line(10, 10, 210, 10)
platno.create_line(210, 10, 210, 210)
platno.create_line(210, 210, 10, 210)
platno.create_line(10, 210, 10, 10)
import tkinter
platno = tkinter.Canvas()
platno.pack()
platno.create_rectangle(10, 10, 200, 150)
import tkinter
import tkinter
canvas = tkinter.Canvas() canvas.pack()
canvas.create_oval(170, 50, 210, 90) canvas.create_oval(160, 90, 220, 150) canvas.create_oval(150, 150, 230, 230)
Python a práce s časem
Pro práci s časem slouží knohovna time. Musíme ji tedy na začátku skriptu naimportovat. Základní funkcí pro práci s časem je funkce:
time()
Tato funkce zjistí, kolik uběhlo času od 1.1.1970.
Celý skript který zjistí kolik sekund uběhlo od 1.1.1970 je tedy:
import time
print(time.time())
import time
zacatek = time.time()
while (time.time()-zacatek) <= 0.1:
{print ("Ahoj")
}
# bude se vypisovat "Ahoj" po dobu 0.1 sekundy
Pokud chceme zjistit čas na počítači uživatele využijeme funkci:
localtime()
import time
print(time.localtime())
Pokud lokální čas budeme chtít lépe naformátovat, využijeme například zápis:
import time
mistnicas = time.localtime()
print("Dnes je {}. {}. {}.".format(mistnicas[2], mistnicas[1], mistnicas[0]))
Náhodné číslo
import random
cislo1=random.randrange(1, 5)
cislo2=random.randrange(1, 5)
cislo3=random.randrange(1, 5)
print("Součet je:",cislo1+cislo2+cislo3)
Python a databáze MySQL
Pokud budeme vytvářet databázovou aplikaci, Python se bude připojovat k serveru, obsahující nějaká data. Databáze bude vytvořena například v MySQL, PostgreSQL, případně Microsoft SQL.
Co budeme potřebovat?
- Vytvořenou databázi na nějakém serveru.
- Databáze bude obsahovat minimálně jednu tabulku.
- Tabulka bude obsahovat libovolná data v jednotlivých polích.
- Nainstalovaný konektor pro připojení k databázi (například mysql.connector)
- Program pro připojení k databázi.
- Program pro výpis dat z databáze.
Instalace mysql.connector
Mysql-connector není součástí standartní knihovny, je potřeba si doinstalovat balíček. Instalaci provedeme přes příkazový řádek, kde zapíšeme příkaz:
python -m pip install mysql-connector-python
V zápisu je zvláštní příkaz PIP – jedná se o správce balíčků, který se stará o jejich instalaci. Pokud mám everzi Python 3.4 a vyšší, PIP je součástí standartní instalace Python.
Balíček obsahuje všechny soubory, které modul potřebuje.
Moduly jsou knihovny kódu, které můžeme naimportovat do projektů.
Dále vyzkoušíme v příkazovém řádku příkaz python test.py, kde test.py je soubor, který obsahuje kód import mysql.connector. Pokud vše je ukončeno bez chyby, můžeme pokračovat dále.
Propojení s databází
Nejdříve je potřeba importovat modul mysql-connector a poté se spojit s MySQL databází. Budeme potřebovat:
- adresu databázového serveru
- jméno k přihlášení na databázový server s MySQL
- heslo k přihlášení na databázový server s MySQL
import mysql.connector
mojedatabaze = mysql.connector.connect(
host="adresa serveru",
user="uživtel",
password="heslo",
print(mojedatabaze)
-----------------------------------------
Například
-----------------------------------------
import mysql.connector
mojedatabaze = mysql.connector.connect(
host="sql18.web4u.cz",
user="jana",
password="hslojany",
)
print (mojedatabaze)
Zobrazujeme data z databáze
import mysql.connector
mydb = mysql.connector.connect(
host="sql18.web4u.cz",
#jméno serveru
user="jana",
#uživatelské jméno
password="heslojany",
#heslo
database="ucitel2",
#vybraná databáze
)
mycursor = mydb.cursor()
#vytvořený kurzor k databázi. Ten umožní s databází pracovat pomocí metody cursor().
#Kurzorů může být v jednom spojení více.
#Kurzor si pomatuje poslední SQL příkaz.
mycursor.execute("SELECT * FROM skola")
#tady je SQL příkaz - vybírá data za databáze
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Práce se souborem csv
CSV je jednoduchý souborový formát určený pro výměnu tabulkových dat. Soubor ve formátu CSV se skládá z řádků, ve kterých jsou jednotlivé položky odděleny znakem čárka (, ). Hodnoty položek mohou být uzavřeny do uvozovek.
Stáhněte si soubor bazar.csv ZDE
Stáhněte si soubor spotreba.csv ZDE
import csv #naimportujeme knihovnu csv
with open('spotreba.csv') as csvfile:
spotreba = list(csv.DictReader(csvfile))
print(len(spotreba)) #zjistíme kolik položek je v souboru
Práce se souborem csv – výpis záznamů
import csv #naimportujeme knihovnu csv
with open('spotreba.csv') as csvfile:
auta = list(csv.DictReader(csvfile))
for znacka in auta:
print(znacka["model"])
Stáhněte si soubor Hotely.csv
Stáhněte si soubor pracovnici.csv