16.9.2011 |
|
Python
Základy programovania v Python
Tento návod Vám vysvetlí všetky základné veci, ktoré by ste mali ovládať, pokiaľ chcete programovať v Pythone. Zo začiatku hneď pár kľúčových faktov k Pythonu, ktorý je:
- silne dynamicky typovaný (implicitné konverzie sú medzi číselnými typmi, premenné nemusíte deklarovať)
- case sensitive
- objektovo orientovaný
- silne dynamicky typovaný (implicitné konverzie sú medzi číselnými typmi, premenné nemusíte deklarovať)
- case sensitive
- objektovo orientovaný
1.Syntax jazyka je typický tým, že každý príkaz je oddelený len novým riadkom, bez ukončovacieho znaku. Taktiež oddelenie blokov sa robí ich odsadením, žiadne zátvorky. Nový blok začína po ":". Jednoriadkové komentáre môžte písať a za znakom "#", alebo viacriadkové komentáre medzi trojitými úvodzovkami """komentár""".
2.Medzi dátové štruktúry jazyka patria zoznamy, n-tice a slovníky, pričom zoznam je klasické jednorozmerné pole, n-tica predstavuje nemenný zoznam a slovník je asociatívne pole.
n-tica_v_zozname=[1, 2, (9, 8), 3]
slovnik={"jablko" : 3, "hruska" : 10}
Výber z poľa sa robí v hranatých zátvorkách, pričom pomocou ":" môžte určiť interval výberu. Napríklad pole[:3] vyberie všetky prvky poľa až po index 3.
Pokiaľ chceme zmazať nejaký prvok, môžme to spraviť napríklad ako del pole[3].
n-tica_v_zozname=[1, 2, (9, 8), 3]
slovnik={"jablko" : 3, "hruska" : 10}
Výber z poľa sa robí v hranatých zátvorkách, pričom pomocou ":" môžte určiť interval výberu. Napríklad pole[:3] vyberie všetky prvky poľa až po index 3.
Pokiaľ chceme zmazať nejaký prvok, môžme to spraviť napríklad ako del pole[3].
3.Reťazec sa zapisuje medzi úvodzovky, jeho výpis je možný pomocou funkcie print následovne:
print "Jednicka = " + repr(2 - 1) + ", Dvojka = " + repr(2 * 1)
print "Jednicka = " + repr(2 - 1) + ", Dvojka = " + repr(2 * 1)
4.Riadiace štruktúry predstavujú if, for a while. Pár ukážok:
cislo = 1
pole = [2, 3, 4]
if cislo in pole:
print cislo
for i in pole:
print i
dlzka=len(pole)
i=0
while i < dlzka:
print pole[i]
i+=1
V cykle for sa casto môže hodiť funkcia range(), ktorá vám podľa vstupných parametrov vytvorí pole. Teda napríklad pole s číslami 4 až 10 vytvoríte ako range(4, 11), čísla 0 až 5 ako range(6).
cislo = 1
pole = [2, 3, 4]
if cislo in pole:
print cislo
for i in pole:
print i
dlzka=len(pole)
i=0
while i < dlzka:
print pole[i]
i+=1
V cykle for sa casto môže hodiť funkcia range(), ktorá vám podľa vstupných parametrov vytvorí pole. Teda napríklad pole s číslami 4 až 10 vytvoríte ako range(4, 11), čísla 0 až 5 ako range(6).
5.Funkciu definujete pomocou kľúčového slova def následovne:
def funkcia(a):
print a
Pri definovaní hodnoty vstupných parametrov dané parametre nie je nutné zadávani pro volaní funkcie, teda:
def funkcia(a=5, txt=""):
print txt + str(a)
funkcia()
funkcia(txt="Cislo: ")
def funkcia(a):
print a
Pri definovaní hodnoty vstupných parametrov dané parametre nie je nutné zadávani pro volaní funkcie, teda:
def funkcia(a=5, txt=""):
print txt + str(a)
funkcia()
funkcia(txt="Cislo: ")
6.Trieda umožňuje viacnásobnú dedičnosť. Súkromné premenné a metódy je možné definovať pridaním "__" pred názov. Nasleduje ukážka definície triedy:
class MojaTrieda():
__init__(self):
self.premenna=1
def pridaj_a_vypis(self, a):
self.premenna+=a
print self.premenna
class MojaTrieda():
__init__(self):
self.premenna=1
def pridaj_a_vypis(self, a):
self.premenna+=a
print self.premenna
7.Obsluha výnimiek sa uskutočňuje pomocou bloku try následovne:
a=10
for i in range(1:100):
try:
a=a/i
except ZeroDivisionError:
a+=10 #osetrenie v pripade vynimky
else:
pass #vynimka sa nevyskitla
finaly:
print a #vykona sa vzdy
a=10
for i in range(1:100):
try:
a=a/i
except ZeroDivisionError:
a+=10 #osetrenie v pripade vynimky
else:
pass #vynimka sa nevyskitla
finaly:
print a #vykona sa vzdy
8.Do projektov budeme často pridávať ďalšie knižnice. To je možné pomocou príkazu import kniznica, prípadne pre import konkrétnej funkcie je možný zápis from kniznica import funkcia.
9.Práca so súbormi je klasická, uvedieme si ukážku nejakého zápisu a následne čítania súboru.
cesta="C:/mojsubor.txt"
#zapis
subor=open(cesta, "w+")
subor.write("Hello world!")
subor.close()
#citanie
subor=open(cesta, "r")
riadky=subor.readlines()
subor.close()
for r in riadky:
print r
cesta="C:/mojsubor.txt"
#zapis
subor=open(cesta, "w+")
subor.write("Hello world!")
subor.close()
#citanie
subor=open(cesta, "r")
riadky=subor.readlines()
subor.close()
for r in riadky:
print r