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í

prostředí Shell

Alternativní prostředí pro programování v Python

online editor mu pro programování Microbituhttps://python.microbit.org/v/2.0
online prostředí repl.ithttps://repl.it/repls/ImaginativeInternalCompilers#main.py
online prostředí Online GDBhttps://www.onlinegdb.com/
Prostředí online programování v REPL.IT

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