Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

786/1934

Reklama na Python

Pokusím se zde stručně a názorně ukázat, co Python umí. V Pythonu se jednoduché problémy řeší jednoduše a při řešení složitých problémů vás Python vede k srozumitelnosti a přehlednosti takže se nemusíte bát, že si ukroutíte hlavu nebo ukousnete prst. Python je jazyk Objektový, ale zároveň vás k objektovému kódu nikdo nenutí a můžete psát klasický strukturovaný kód.

Python je opravdu univerzální jazyk. Můžete psát jednoduché konzolové aplikace, můžete skriptovat webové aplikace, které pracují s databází, můžete vytvářet klikátka s grafický uživatelským rozhraním. Jako příklad webové aplikace můžu uvést například vykreslení součinu střídavého napětí a proudu.

Python je také výborný jazyk pro (elektro)technické a vědecké výpočty. Umožňuje velice jednoduchý a efektivní zápis a řešení matematických problémů (má například datový typ pro komplexní čísla) a s knihovnou SciPy a Matplotlib získáte opravdu výborný nástroj pro vizualizaci dat. Srovnejte si například mnou vytvořený kód v Pythonu s tím, co umíte udělat v tabulkovém procesoru.

Domnívám se, že Python je také dobrým kandidátem jako jazyk do úvodních kurzů programování. Vyzkoušejte a uvidíte.

Python shell

Součástí instalace jazyka Python je i jednoduché vývojové prostředí IDLE, které obsahuje Python Shell a jednoduchý editor kódu.

Python shell a NumPy

Python Shell slouží k rychlé názorné interaktivní práci, k experimentování a pokusům, nebo jako výkonná kalkulačka. Můžete si rychle vyzkoušet, co dělá a jak se chová který příkaz, můžete krokovat program příkaz po příkazu. Pro nápovědu a doplňování kódu slouží tabulátor.

Opravdu jednoduchá, přehledná a čitelná syntax

Python má velice jednoduchou a čitelnou syntax. Vnoření částí kódu podmíněného příkazu nebo cyklu -- tedy tzv. blok se provádí pouhým odsazením. Žádné složené závorky ani begin - end.

Jako příklad zde uvedu program na výpočet prvních N prvočísel.

prvocisla.py
   1 #!/usr/bin/env python3
   2 #
   3 # Program vypíše prvních N prvočísel
   4 #
   5 
   6 N = int(input("Kolik: "))
   7 
   8 poc=0           # počítadlo prvočísel
   9 cislo = 2       # prvním kandidátem je číslo 2
  10 prvocislo="Ano" # proměnná indikuje, zda jsem našel prvočíslo
  11 
  12 # hlavní cyklus počítá, kolik mám prvočísel
  13 while poc < N:
  14     i=2
  15     # zjišťuji zda je cislo prvočíslem
  16     while cislo>i:
  17         prvocislo = "Ano"
  18         if (cislo%i) == 0:
  19             prvocislo = "Ne" # pokud najdu dělitele nejde o prvočíslo
  20             break            # a vyskočím z cyklu
  21         i+=1
  22     if prvocislo == "Ano":
  23         print(i," ",end='')  # tisknu prvočíslo 
  24         poc += 1         # navýším počítadlo prvočísel
  25     cislo += 1    
  26 
  27 # na konec vytisknu konec řádku
  28 print("\n",end='')    
`--> stáhnout

Kvalitní technické a vědecké knihovny

Python disponuje množstvím kvalitních knihoven pro numerické, technické a vědecké výpočty a pro vizualizaci dat. Více se o tom rozepisuji v části Elektro(tech)?nika --> Technické výpočty.

Želví grafika

Pro výuku programování se často používá tzv. želví grafika, kdy se želva jakoby pohybuje po písku a ocáskem do něj kreslí obrazce. V Pythonu lze želví grafiku velice jednoduše použít pomocí standardního modulu turtle.

Na tomto příkladu chci ukázat zápis podprogramů:

turtle-gr.py
   1 #!/usr/bin/python3 
   2 
   3 from turtle import *
   4 import tkinter
   5 
   6 ###########  Definice funkcí  ##################
   7 
   8 # kreslí čtverec
   9 def ctverec(a):
  10     for i in range(4):
  11         forward(a);
  12         left(90)
  13     return
  14 
  15 # kreslí čtverec s středem uprostřed
  16 def ctverecStred(a):
  17     up()
  18     right(90)
  19     forward(a/2);
  20     right(90)
  21     forward(a/2);
  22     down()
  23     right(180)
  24     for i in range(4):
  25         forward(a);
  26         left(90)
  27     up()
  28     left(90)
  29     forward(a/2);
  30     right(90)
  31     forward(a/2);
  32     down()
  33     return
  34 
  35 # kreslí čtverce v kruhu
  36 def pootoceneCtverce(strana=80,pocet=24):
  37     for i in range(pocet):
  38         ctverec(strana)
  39         right(360/pocet)
  40     return
  41 
  42 def pootoceneCtverceStred(strana=80,pocet=24):
  43     for i in range(pocet):
  44         ctverecStred(strana)
  45         right(360/pocet)
  46     return
  47 
  48 # kreslí kružnice v kruhu
  49 def pootoceneKruznice(strana=80,pocet=24):
  50     for i in range(int(pocet) ):
  51         pencolor("brown")
  52         circle(0.8*strana)
  53         right(360/pocet)
  54         pencolor("black")
  55     return
  56 
  57 #################  Volání funkcí   #######################
  58 
  59 shape("turtle") # obrázek kresli želva
  60 speed(6)        # 1 pomalu, 10 rychle, 0 nejrychleji 
  61 
  62 
  63 
  64 pootoceneCtverceStred(190,11)
  65 pootoceneCtverce(90,13)
  66 #up()
  67 #down()
  68 pootoceneKruznice(90,12)
  69 fillcolor("red")
  70 stamp()
  71 goto(80,120)
  72 dot(50)
  73 
  74 exitonclick() # click to exit
`--> stáhnout

Rekurze

Želví grafika se často používá pro výuku rekurze:

fraktal.py
   1 #!/usr/bin/python3
   2 
   3 import turtle;
   4 
   5 turtle.speed(0)
   6 turtle.shape("turtle")
   7 turtle.up()
   8 turtle.back(200)
   9 turtle.down()
  10 
  11 
  12 def zub(delka,pocet):
  13     if pocet <= 0:
  14         turtle.forward(delka)
  15     else:
  16         zub(delka/3,pocet-1)
  17     turtle.left(60)   # otočím želvu
  18     if pocet <= 1:
  19         turtle.forward(delka)
  20     else:
  21         zub(delka/3,pocet-1)
  22     turtle.right(120) # otočím želvu
  23     if pocet <= 2:
  24         turtle.forward(delka)
  25     else:
  26         zub(delka/3,pocet-1)
  27     turtle.left(60)   # otočím želvu
  28     if pocet <= 1:
  29         turtle.forward(delka)
  30     else:
  31         zub(delka/3,pocet-1)
  32 
  33 def vlocka(delka,pocet):
  34     for i in range(6):
  35         zub(delka,pocet)
  36         turtle.right(60)
  37 
  38 turtle.hideturtle()
  39 zub(77,4)
  40 #vlocka(50,3)
  41 
  42 turtle.exitonclick() 
`--> stáhnout

Grafické uživatelské rozhraní

Python si s sebou při instalaci automaticky nese grafickou knihovnu Tk. Tato knihovna je i přes svůj archaický vzhled poměrně výkonná a dává začínajícímu uživateli téměř vše, co by si mohl přát.

Pokut toužíte novějším vzhledu a chcete si dopřát trošku více možností a pohodlí jsou tu velice kvalitní knihovny GTK a Qt a jejich nadstavby pro Python PyGTK, PyQt nebo wxPython.

tkgui.py
   1 #!/usr/bin/env python3
   2 # Soubor:  easydrow.py
   3 # Datum:   16.02.2011 07:30
   4 # Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5 # Licence: GNU/GPL 
   6 # Úloha:   Jednody
   7 ############################################
   8 
   9 # modul GUI TCL/TK
  10 from tkinter import *  
  11 # modul želví grafiky
  12 import turtle
  13 
  14   
  15 #####################################################
  16 ################# Definice funkcí ################### 
  17 #####################################################
  18 
  19 # Přesunu želvu na zadané souřadnice
  20 def presun(x,y):
  21     turtle.onscreenclick(None)
  22     turtle.goto(x,y)
  23     turtle.onscreenclick(presun)
  24 
  25 def turtleClear():
  26     turtle.clear()
  27 
  28 def turtleUp():
  29     turtle.up()
  30     
  31 def turtleDown():
  32     turtle.down()
  33 
  34 def close():
  35     turtle.bye()
  36     hlavni.destroy()
  37   
  38 
  39 #####################################################
  40 #################      GUI        ################### 
  41 #####################################################
  42 turtle.shape("turtle")
  43 turtle.onscreenclick(presun)
  44 
  45 # hlavní okno
  46 hlavni=Tk()  
  47 
  48 # vytvoří ovládací prvky a přiřadí událostem funkce
  49 tlClear = Button(hlavni, text='Clear', command=turtleClear) 
  50 tlClear.pack()
  51 tlUp = Button(hlavni, text='Up', command=turtleUp) 
  52 tlUp.pack()
  53 tlDown = Button(hlavni, text='Down', command=turtleDown) 
  54 tlDown.pack()
  55 tlClose = Button(hlavni, text='Close', command=close) 
  56 tlClose.pack()
  57 
  58 # smyčka čekající na události
  59 hlavni.mainloop()  #  spustíme/zobrazíme celý program  
  60 
`--> stáhnout

| navigace |

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net