You are on page 1of 28

Programmanas valoda

iescjiem

1. daa. Ievads Python

2005 Alvils Brzi

Programmanas valoda Python iescjiem

Saturs
Ievads......................................................... .....................................................................3 Vienkrks aritmtikas izteiksmes..............................................................................4 . Matemtisks funkcijas........................................................................... .........................5 Komentri............................................................................................ .............................6 Interaktvu programmu veidoana...................................................................................7 Moduu ielde................................................................................................ ...................8 Funkcijas....................................................................................... ...................................9 Teksta rindas................................................................................................................11 . Nosacjumi....................................................................................................................15 . Python loikas pamati........................................................................ ............................17 Cikli....................................................................... .........................................................19 Saraksti............................................................................... ...........................................21 Regulras izteiksmes.......................................................................... ...........................23 Vrdncas.......................................................................... .............................................25 Rezulttu formatana............................................................................ .......................26 Darbs ar failiem................................................................................. .............................27

Programmanas valoda Python iescjiem

Ievads
Katram zinms, ka msdienu datori spj veikt daudzas un dadas lietas skot ar mjas lietotjam pierastm atskaot mziku, filmas, splt sples, veidot profesionli noformtus dokumentus, un beidzot ar milzgu datu apjomu apstrdi banks, lidosts u.c. Zinms ar, ka visas s lietas dators nemk veikt kop dzimanas - im nolkam nepiecieamas programmas secgi pieraksttas darbbas, kuras dators prot izpildt, lai sasniegtu vlamo rezulttu. Datoram saprotams darbbas jeb komandas ir oti vienkras dators prot saskaitt un atemt, ierakstt skaitus operatvaj atmi un nolast no ts, k ar sazinties ar savm perifrijas iekrtm cieto disku, kompaktdisku vai DVD iekrtu, videokarti (kura videosignlus tlk nosta monitoram), printeri u.c. Datoru pirmskumos komandas tika ievadtas k ciparu 1 un 0 virkntes, jo ie divi cipari ir viengie, ko datora procesors atpazst. Vlk katra da virknte, kas nozmja kdu komandu, tika aizstta ar noteiktu, cilvkam saprotamku apzmjumu t rads asemblera valoda. Tas tomr programmanas darba apjomu sevii nesamazinja, jo komandas jeb darbbas tpat palika oti primitvas. 1950.gados rads t.s. augst lmea programmanas valodas, kurs instrukcijas tika pieraksttas programmtajam saprotamk form darbbas kuva saretkas un tika pieraksttas ar instrukcijm, kas atgdina angu valodas vrdus. Pc tam s instrukcijas tika prveidotas jeb transltas uz datoram saprotamu valodu un pc tam izpildtas. das valodas sauc par kompilatoriem. Cita programmanas valodu klase ir t.s. interpretatori valodas, kurs katra darbba tiek secgi translta un izpildta. das programmas parasti ir pieejamas to pirmkoda jeb skotnj teksta veid jebkur ts var aplkot un modifict. Pie tdm pieder ar programmanas valoda Python. valoda ir oti jaudga taj iespjams gan iemcties programmt, gan veidot nopietnas informcijas sistmas, Internet mjaslapas u.c. Grmat aprakstts programmas paredztas izpildei GNU/Linux opertjsistm. Izmantojot citu opertjsistmu (piemram, Microsoft Windows), atsevis programms, iespjams, jveic izmaias. s programmas iespjams sagatavot ar jebkuru tekstu redaktoru (piemram, KWrite vai Notepad), programmas teksta faila nosaukumu papildinot ar .py, piemram, programma1.py. Pc tam s programmas iespjams izpildt Python vid: 1) GNU/Linux opertjsistm programmu jatver un jizpila Python IDLE vid vai komandrind jizpilda komandas 2) Microsoft Windows opertjsistm programma jatver un jizpilda Python IDLE vid vai komandrind jizpilda komandu
C:\> c:\python\python programma1.py # chmod 755 programma1.py # ./programma1.py

Programmanas valoda Python iescjiem

Vienkrks aritmtikas izteiksmes


Skumam izveidosim vienkru Python programmiu, kura saskaits divus skaitus un izvads rezulttu. Programmas pirmaj rindi tiek nordts, ka t jizpilda ar Python valodas interpretatoru, bet otraj uz ekrna tiek izvadts aprinu rezultts. To veic operators print (drukt). Izmantojot o operatoru, ldzgi iespjams izvadt uz ekrna tekstu:
#!/usr/bin/python print "Labrit" #!/usr/bin/python print 3+4

un ar teksta un aprinu rezulttu kombincijas, ts atdalot ar komatu:


#!/usr/bin/python print "2 * 2 =",2*2

Programmanas valod Python ir pieejamas das aritmtisks darbbas: + - saskaitana - atemana * - reizinana / - dalana % - atlikums no dalanas ** - kpinana, piemram, 23 pieraksta 2**3 Ir iespjams pierakstt ar aretkas izteiksmes, k piemram:
574 2

Pieraksts izskatsies di:


(5+7)*4/2

Programmanas valoda Python iescjiem

Matemtisks funkcijas
Python valod ir iespjams izmantot dadas matemtisks funkcijas un konstantes (piemram, , kas tiek apzmts k pi, vai funkciju sqrt, kura aprina kvadrtsakni), ja programm tiek ievietots pas operators, kur ield datora atmi atbilstoo Python moduli math:
from math import *

Piemrs:
#!/usr/bin/python from math import * print pi print sqrt(16)

Veicot aprinus ar parastu kalkulatoru, saretku aprinu gadjum nepiecieams starprezulttus pierakstt uz papra. Veidojot programmu Python valod, starprezulttiem iespjams pieirt nosaukumus, t.i., tos saglabt maingajos:
#!/usr/bin/python from math import * x = sqrt(16) y = x+1 print x print y

aj piemr programma veic aprinus, izrinot kvadrtsakni no 16. Rezultts tiek pieirts maingajam x. im rezulttam tiek pieskaitts 1, un jaunais rezultts tiek saglabts maingaj y. ie maingie saturs izrints vrtbas ldz brdim, kamr tiem tiks pieirtas jaunas vrtbas, vai ar programma beigs darbu. Piemr maingo vrtbas tiek izdruktas uz ekrna. Vl kds piemrs: ja dots ria lnijas rdiuss (apzmsim to ar r), tad ria laukumu S aprina pc formulas S =R 2 Izveidosim programmu Python valod, kas veic du aprinu:
#!/usr/bin/python from math import * r = 3 S = pi*r**2 print S

Pieemot, ka ria lnijas rdiuss ir 3, aj programm maingajam r tiek pieirta atbilstoa vrtba. Protams, to ir iespjams aizstt ar jebkuru nepiecieamo vrtbu. Pc tam tiek izrints laukuma vrtba, kura tiek pieirta maingajam S. Programmas pdj rindi aprintais laukums tiek izvadts uz ekrna.

Programmanas valoda Python iescjiem

Komentri
Veidojot pietiekoi saretas programmas, biei rodas nepiecieamba komentt tdu vai citdu operatoru. im nolkam valod Python ir paredzts pas pieraksta formts komentrs. Par komentru tiek uzskatts brvi pierakstts teksts, kur skas ar simbolu #. Komentrs var skties jebkur programmas rindias viet, un turpins ldz rindias beigm. Lai ilustrtu komentru pielietoanu, komentsim iepriek izveidoto programmu:
#!/usr/bin/python from math import * # importejam matematisko funkciju moduli # Rinka linijas radiuss r = 3 # Aprekinam laukumu S = pi*r**2 # Izdrukajam rezultatu print S

Piezme: komentros nav iespjams izmantot latvieu specilos simbolus, td, piemram, vrdu Programmana jpieraksta k Programmesana vai Programmeeshana, izmantojot tikai latu alfabta burtus.

Programmanas valoda Python iescjiem

Interaktvu programmu veidoana


Lai noskaidrotu, kas ir interaktvas programmas, minsim izpildt du uzdevumu:

Izmantojot iepriekj sada izveidoto programmu ria laukuma aprinanai, aprint ria laukumu ria lnijm ar diem rdiusiem: 4, 15, 2, 6, 10, 25, 48, 35, 64.

Liekas, nekas pas atliek vien programm veikt izmaias rindi, kur tiek pieirta vrtba maingajam r... Tomr vai rtk nebtu, ja maingajam r vartu pieirt vrtbu, nemainot programmas tekstu? Izrds var. im nolkam programmanas valod Python ir paredzta funkcija input(). funkcija uz brdi aptur programmas darbbu, pieprasot ievadt informciju, izmantojot datora tastatru. Funkcijas rezultts ir ievadt informcija. Prveidosim msu programmu t, lai t ktu interaktva, t.i., lai t savas darbbas laik sazintos ar lietotju, iegstot papildinformciju:
#!/usr/bin/python from math import * # importejam matematisko funkciju moduli # Rinka linijas radiuss print "Ievadiet radiusu" r = input() # Aprekinam laukumu S = pi*r**2 # Izdrukajam rezultatu print S

Izpildot o programmu, t izvads tekstu Ievadiet radiusu un apstsies, gaidot lietotja reakciju. Rdiusa vrtba tiek ievadta, izmantojot datora tastatru. Kad informcija ievadta, lietotjam jnospie taustiu Enter. Tad programma veic tlkos aprinus un izvada rezulttu:
Ievadiet radiusu 15 706.858347058

Programmanas valoda Python iescjiem

Moduu ielde
Iepriekjos piemros tika izmantotas papildfunkcijas no Python modua math. Lai ts vartu izmantot, math modulis katras programmas skum tika ieldts datora atmi, izmantojot operatoru Pc ieldes bija iespjams izmantot visas funkcijas, kuras iebvtas modul math. Biei vien ir izdevgk izmantot otru Python piedvto metodi moduu ieldei un tajos iebvto funkciju izmantoanai. Izmantojot o metodi, modua math ieldei jizmanto operatoru
import math math.pi from math import *

Savukrt, lai izmantotu funkciju pi no modua, jizmanto operatoru Lai aprintu skaita 4 kvadrtsakni, jizmanto operatoru
math.sqrt(4)

utt.

Uzdevums: prrakstiet iepriek izveidoto programmu t, lai t izmantotu tikko aplkoto metodi moduu ieldei un to funkciju izmantoanai!

Programmanas valoda Python iescjiem

Funkcijas
Ms jau esam izveidojui vairkas programmas, tomr ts visas izskats paredztas vienreizjai lietoanai ja nepiecieams ria laukumu izrint vairkas reizes vien programm, nksies vairkas reizes pierakstt viendu programmas fragmentu, kur veiks aprinus. Par laimi, valod Python iespjams vairkkrt izmantot vienu un to pau programmas fragmentu, ja tas tiek pierakstts k apakprogramma. Apakprogramma ir programmas fragments, kur risina apakuzdevumu programmas kopj uzdevuma dau. Python apakprogrammas sauc ar par funkcijm un ts defin ar operatoru def. Prj apakprogrammas daa tiek pierakstta ar atkpi no kreiss malas. Shematiski tas izskats di:
def nosaukums(argumenti): funkcijas operatori return rezultts

Operators def radies no angu valodas darbbas vrda to define (defint, noteikt) un return nozm atgriezt. Katr funkcij var izmantot vairkus return operatorus, bet var ar neizmantot nevienu. Lai ilustrtu funkciju izmantoanu, prrakstsim msu programmu ria laukuma aprinanai, izmantojot funkciju:
#!/usr/bin/python import math # importejam matematisko funkciju moduli # Funkcija rinka linijas radiusa aprekinasanai def Laukums(r): S = math.pi*r**2 return S # Funkcijas beigas # Rinka linijas radiuss print "Ievadiet radiusu" r = input() # Aprekinam laukumu S = Laukums(r) # Izdrukajam rezultatu print S

Izmantojot funkciju Laukums, ir iespjams rti papildint o programmu, lai, piemram, t pieprastu ievadt divus ria lniju rdiusus, aprintu to laukumus un pardtu, cik reizes pirmais ievadtais laukums ir lielks par otro:

Programmanas valoda Python iescjiem


#!/usr/bin/python import math # importejam matematisko funkciju moduli # Funkcija rinka linijas radiusa aprekinasanai def Laukums(r): S = math.pi*r**2 return S # Rinka liniju radiusi print "Ievadiet radiusu 1" r1 = input()print "Ievadiet radiusu 2" r2 = input() # Aprekinam laukumus S1 = Laukums(r1) S2 = Laukums(r2) # Izdrukajam rezultatu print "Rinka ar radiusu", r1, "laukums ir", Laukums(r1)/Laukums(r2), "reizes lielaks par rinki ar radiusu", r2

aj gadjum lietotja dialogs ar programmu izskatsies di:

Ievadiet radiusu 1 15 Ievadiet radiusu 2 11 Rinka ar radiusu 15 laukums ir 1.85950413223 reizes lielaks par rinki ar radiusu 11

10

Programmanas valoda Python iescjiem

Teksta rindas
Ldz im ms nodarbojmies praktiski tikai ar skaitu apstrdi, veicot aprinus. Tomr datora iespjas ar to neaprobeojas. Python auj apstrdt ar teksta informciju. Teksta rindas sastv no atseviiem simboliem, katrs no kuriem apzm kdu burtu, skaitli, specilo simbolu utt. Bez tam atseviiem simboliem ir paa nozm un tie neapzm nevienu redzamu simbolu. Piemram, tds simbols ir jaunas rindas simbols, kur apzm vietu, kur jveic rindas prnesumu. Valod Python to apzm ar diviem redzamajiem simboliem \n. Katram simbolam ir ar skaitlisks apzmjums (kods) vesels skaitlis no 0 ldz 255. Simboli ar kodiem no 0 ldz 127 ir standartizti un tiek saukti par simbolu kopu ASCII (American Standard Code for Information Interchange ameriku standarta kods informcijas apmaiai). Prjos simbolus ar kodiem no 128 ldz 255 var izmantot dadi, tomr tie parasti tiek izmantoti nacionlo alfabtu specilo simbolu attloanai, piemram, latvieu specifiskajiem burtiem , , , utt.. Valod Python ir paredztas divas funkcijas, kuras auj uzzint simbola kodu un otrdi pc koda noteikt simbolu. Aplkosim ts, izveidojot du programmu:
#!/usr/bin/python print ord("A") print chr(65) 65 A

Programmas izpildes rezultts bs Funkcijas ord nosaukums radies no angu valodas vrda order (krtas numurs, krtba). s funkcijas arguments ir simbols un rezultts t krtas skaitlis ASCII tabul (kods). Funkcijas chr nosaukums, savukrt, radies no angu valodas vrda character (simbols). s funkcijas arguments ir simbola skaitliskais kods un rezultts pats simbols. Ar teksta rindm iespjams veikt ldzgas darbbas, k ar skaitiem: + - savienoana jeb konkatencija * - pavairoana jeb atkrtoana Piemram, programmas
#!/usr/bin/python print "Alise"+" "+"brinumzeme" print "-"*16

rezultts bs

aj programm vispirms trs rindas tiek savienotas vien un pc tam viena rinda tiek atkrtota 16 reizes. Teksta rindm, ldzgi k skaitiem, iespjams pieirt nosaukumus:

Alise brinumzeme ----------------

11

Programmanas valoda Python iescjiem


#!/usr/bin/python rinda1="Aiz" rinda2="spoguli" rinda3="ja" teksts=rinda1+rinda2+rinda3 print teksts teksts=rinda1+rinda2+"s" print teksts Aizspogulija Aizspogulis

s programmas izpildes rezultts bs Tlk aplkosim dadas Python valodas funkcijas, kuras paredztas teksta rindu apstrdei. Teksta rindas garumu iespjams uzzint, izmantojot funkciju len. Ts nosaukums radies no angu valodas vrda length (garums). Piemram:
#!/usr/bin/python teksts="Aizspogulija" print len(teksts) 12

Programmas izpildes rezultts bs Prbaudot, konstatjam, ka vrd Aizspogulija tiem ir 12 simboli. Programmanas valod Python ir iespjams ar izgriezt dau teksta no rindas. Aplkosim vairkus piemrus:
#!/usr/bin/python teksts="Aizspogulija" print "Izgriezam no 2. ldz 7. simbolam:", teksts[1:7] print "Izgriezam no 4. simbola lidz rindas beigam:", teksts[3:] print "Izgriezam no rindas sakuma lidz 3. simbolam:", teksts[:3] print "Izgriezam rindas 3. simbolu:", teksts[2]

im piemram bs nepiecieami dai paskaidrojumi. Python valoda skaita nevis simbolus pc krtas, bet atstarpes starp simboliem: A I Z S P O G U L I J A 0 1 2 3 4 5 6 7 8 9 10 11 12 Papildus tam, k redzams zmjum, atstarpes sk skaitt no 0, nevis 1. Lai no maing teksts izgrieztu dau, ja zinma gan skuma, gan beigu atstarpe, jizmanto Python konstrukciju kur skums un beigas ir skuma un beigu atstarpju numuri. Msu piemr starp atstarpm ar numuriem 1 un 7 atrodas teksts izspog. Ja beigu atstarpe nav nordta, t.i., konstrukcija tiek pierakstta form
teksts[skums:] teksts[skums:beigas]

Python uzskata, ka domta pdja atstarpe teksta rind. Ja nav nordta skuma atstarpe, t.i., konstrukcija tiek pierakstta form
teksts[:beigas]

Python uzskata, ka domta atstarpe ar numuru 0, t.i., to pau var pierakstt form
teksts[0:beigas]

Lai no teksta rindas iegtu vienu simbolu, kur seko noteiktai atstarpei, jizmanto 12

Programmanas valoda Python iescjiem

konstrukciju
teksts[atstarpe]

Msu piemr pc atstarpes ar numuru 2 seko burts Z. ds pieraksts skum var likties nedaudz dvains, tomr, pierodot pie t, izrds, ka nekas sarets d pieraksta veid nav. Lai atvieglotu izpratni par Python teksta rindu simbolu numerciju, varam uzskatt, ka katram rindas simbolam ir savs krtas skaitlis, skot ar 0. Gadjumos, kad jnorda vairk, k viens simbols teksta rind, skumsimbolu norda pc t krtas numura un beigu simbolu pc t krtas numura, pieskaitot 1. Piemram, lai nordtu pdjos etrus simbolus vrd Aizspogulija, vispirms konstatjam, ka pc krtas jnorda simboli no 9. ldz 12. T k pirmajam vrda simbolam ir krtas skaitlis 0, tad jnorda simboli ar krtas skaitiem no 8 ldz 11. Tomr iepriek vienojmies, ka beigu simbola krtas numuram tiek pieskaitts 1. Tas nozm, ka Python valod atbilstoais pieraksts izskatsies Cita interesanta Python valodas funkcija auj saskaitt, cik reizes noteikts teksta fragments pards cit teksta rind. Ilustrsim to ar piemru:
#!/usr/bin/python import string teksts = "Mes, saproties, ar vechiem, saproties, aizgajam, pastaigat, saproties." skaits = string.count(teksts, "saproties") print "Vards 'saproties' atkartojas", skaits, "reizes." saproties, [8:12]

s programmas izpildes rezultts bs

Funkcija, kura veic o saskaitanu, ir iebvta modul string, td vispirms o moduli jield datora atmi. Pc tam funkciju iespjams izmantot: kur teksts ir maingais vai teksta rinda, kur jmekl, cik reizes taj atkrtojas maingais vai teksta rinda apaksteksts. Vl kda funkcija auj atrast pozciju (atstarpes numuru), kur noteikt rind pirmo reizi sastopama noteikta apakrinda:
#!/usr/bin/python import string teksts = "Mes, saproties, ar veciem, saproties, aizgajam, saproties, pastaigat, saproties." pozicija = string.find(teksts, "saproties") print "Vards 'saproties' pirmo reizi atrodams pozicija", pozicija string.count(teksts, apaksteksts)

Vards 'saproties' atkartojas 4 reizes.

Programmas izpildes rezultts bs

Prbaudot, tiem konstatjam, ka pirmais vrds saproties msu teksta rind skas 5.pozcij. Lai teksta rind aizvietotu noteiktu apakrindu ar citu apakrindu (ldzgi, k tekstu redaktoros darbojas funkcija Meklt/Aizvietot (Find/Replace), varam izmantot du funkciju:

Vards 'saproties' pirmo reizi atrodams pozicija 5

13

Programmanas valoda Python iescjiem


#!/usr/bin/python import string teksts = "Mes, saproties, ar veciem, saproties, aizgajam, pastaigat, saproties." jaunaisteksts = string.replace(teksts, "saproties", "zinies") print teksts print jaunaisteksts

saproties,

Programmas darbbas rezultts bs

Mes, saproties, ar veciem, saproties, aizgajam, saproties, pastaigat, saproties. Mes, zinies, ar veciem, zinies, aizgajam, zinies, pastaigat, zinies.

Uzdevums: izskaidrojiet s funkcijas darbbu!

14

Programmanas valoda Python iescjiem

Nosacjumi
Nevienu daudz maz nopietnu programmu nav iespjams izveidot, neizmantojot taj lmumu pieemanu. Piemram, kad Js strdjat ar tekstu redaktoru, kur ir nesaglabts dokuments un nolemjat to aizvrt, tekstu redaktors Jums prjauts, vai tiem Js nevlaties saglabt savu sagatavoto dokumentu. Atkarb no Jsu atbildes dokuments tiek vai ar netiek saglabts tiek pieemts lmums veikt vai neveikt o darbbu. Programmanas valod Python lmumu pieemanu iespjams veikt, izmantojot operatoru if (angu valod tas nozm ja). Shematiski o operatoru iespjams attlot di:
if nosacjums: Operatori, kas jizpilda, ja nosacjums izpilds. Operatori tiek pierakstti ar atkpi. else: Operatori, kas jizpilda, ja nosacjums neizpilds.

Gadjumos, ja jveic darbbas, izpildoties nosacjumam, bet nav jveic nekas, neizpildoties, lmuma pieemanas konstrukcijas dau else iespjams izlaist. Nosacjumos izmantojams saldzinanas opercijas: > - lielks < - mazks == - viends >= - lielks vai viends <= - mazks vai viends != - nav viends Vienkrs piemrs:
#!/usr/bin/python print "Ievadiet skaitli" skaitlis = input() if skaitlis>=0: print "Pozitivs skaitlis" else: print "Negativs skaitlis" Ievadiet skaitli 10 Pozitivs skaitlis

ir interaktva programma, un lietotja dialogs ar to vartu izskatties di:

vai di:

Izmantojot papildus atkpes no kreiss malas, Python programm iespjams dadas konstrukcijas ievietot vienu otr:

Ievadiet skaitli -5 Negativs skaitlis

15

Programmanas valoda Python iescjiem


#!/usr/bin/python print "Ievadiet skaitli" skaitlis = input() if skaitlis>=0: if skaitlis==0: print "Nulle" else: print "Pozitivs skaitlis" else: print "Negativs skaitlis"

Uzdevums: izskaidrojiet s programmas darbbu!

16

Programmanas valoda Python iescjiem

Python loikas pamati


Jebkur msdienu dators darbojas pc stingriem loikas likumiem. Zintnieki ir izstrdjui daudz un dadus loikas paveidus, tomr datoros visrtk ir izmantot Bla loiku (Boolean logic), kas nosaukta par godu 19.gadsimta angu matemtiim Dordam Blam (Bool). aj loik tiek izmantotas divas iespjams vrtbas, kuras nosauksim patiesba un meli (true un false). Lai sasintu pierakstu, apzmsim ts k 1 un 0. Loikas formuls visbiek tiek izmantotas das opercijas: noliegums (loiskais N), disjunkcija (loiskais VAI) un konjunkcija (loiskais UN). Noliegumu Python apzm k not un tas darbojas oti vienkri attiecinot not uz kdu vrtbu, patiesba kst par meliem un meli - par patiesbu:
not 0 1 not 1 0

Disjunkcijas (tiek pierakstta k or) izpild tiek izmantoti divi argumenti, un ts rezultts bs meli tikai tad, ja abi argumenti bs meli:
0 or 0 0 0 or 1 1 1 or 0 1 1 or 1 1

Divu argumentu konjunkcija (and) bs patiesba tikai tad, ja abi argumenti bs patiesba:
0 and 0 0 0 and 1 0 1 and 0 0 1 and 1 1

Piemram, ja dots maingais A, kur satur skaitlisku vrtbu un nepiecieams veikt kdas darbbas tikai gadjum, ja A ir mazks par 10, bet lielks par 0 (t.i., A ir skaitlis no 1 ldz 9), atbilstoa Python programma var izskatties di:
#!/usr/bin/python print "Ievadiet A" A=input() if A>0: if A<10: print "Sveiki! 0<A<10." #!/usr/bin/python print "Ievadiet A" A=input() if A>0 and A<10: print "Sveiki! 0<A<10."

Tomr, izmantojot konjunkciju, programmas teksts ir daudz prskatmks:

Ldzg veid ir iespjams vien izteiksm kombint konjunkciju, disjunkciju un noliegumu, iekaujot vien formul saretu loiku.

17

Programmanas valoda Python iescjiem

Uzdevums: sastdiet loikas izteiksmi, kuras rezultts ir patiesba tikai tad, ja maingais A ir pozitvs pra skaitlis vai jebkur skaitlis, kur mazks par 0!

18

Programmanas valoda Python iescjiem

Cikli
Galven datoru izmantoanas priekrocba ir, ka tie spj nenogurstot neprtraukti atkrtot vienas un ts paas darbbas. aj sada aplkosim ciklus konstrukcijas, kuras auj vairkkrt izpildt vienu un to pau programmas fragmentu nepiecieamo reiu skaitu. Katru tdu atkrtojumu biei vien sauc par iterciju. Programmanas valod Python ir divu veidu cikli: while (kamr) cikls un for (priek) cikls. Pirmais no ciklu veidiem veic nepiecieams darbbas tik ilgi, kamr izpildsies noteikts nosacjums. Python di cikli tiek pierakstti form Tas nozm, ka, kamr izpildsies nosacjums (tas tiek pierakstts ldzgi, k lmuma pieemanas operator if), tiks atkrtoti izpildti cikla operatori. Lai ilustrtu while cikla izmantoanu, izveidosim programmu, kura pieprasa ievadt skaitli, kas lielks par 0:
#!/usr/bin/python print "Ievadiet skaitli, kas lielaks par 0:" skaitlis=input() while skaitlis<=0: skaitlis = input() print "Ievadits skailis", skaitlis while nosacjums: cikla operatori

Lietotja dialogs ar programmu izskatsies di:


Ievadiet skaitli, kas lielaks par 0: -1 0 5 Ievadits skailis 5

Programmas skum lietotjam tiek piedvts ievadt skaitli. Ja dergs skaitlis (kur neatbilst nosacjumam mazks vai viends par nulli, t.i., atbilst nosacjumam lielks par nulli) tiek ievadts uzreiz, while cikls nesks darbu tiks izvadts programmas rezultts (pdj programmas rindi) un programma beigs darbu. Turpret, ja tiks ievadts nedergs skaitlis, programma veiks while cikl nordto darbbu (atkrtota skaita ievadana), kamr netiks ievadts korekts skaitlis. Otrs cikla veids ir t.s. for cikls. Lai ilustrtu t lietdergumu, izveidosim programmu, kura izvada skaitus no 1 ldz 20, izmantojot while ciklu:
#!/usr/bin/python skaitlis=1 while skaitlis<=20: print skaitlis skaitlis = skaitlis+1

programma izveido jaunu maingo ar nosaukumu skaitlis, pieirot tam skotnjo vrtbu 1. Tad seko cikls, kur atkrtosies, kamr skaitlis nebs lielks par 20. Cikla operatori veic maing izvadi uz ekrna un palielina maing vrtbu par 1. ds pieraksts nav prskatms it pai, ja cikla iekjo operatoru ir daudz. Tad var nodert for cikls. cikla shematiskais pieraksts ir ds:
for parametrs in secba: cikla operatori

aj gadjum parametrs ir maingais, kura vrtba tiks mainta katr cikla itercij, 19

Programmanas valoda Python iescjiem

un secba ir cikla darbbas laik izmantojamo vrtbu virkne. To pieraksta form


[vrtba1, vrtba2, ...]

Piemram, iepriek aplkoto programmu iespjams prrakstt ar ciklu for:


#!/usr/bin/python for skaitlis in [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]: print skaitlis

Lai visu skaitu virkni nebtu jpieraksta tik nert form, iespjams izmantot Python iebvto funkciju xrange, kuras rezultts ir skaitu virkne nordtaj intervl. Intervlu norda ldzgi, k teksta rindm izmantojot atstarpes. Piemram, prveidojot msu programmu t, lai for cikl tiktu izmantota xrange funkcija, iegstam rezulttu:
#!/usr/bin/python for skaitlis in xrange(1,21): print skaitlis

K nedaudz saretku piemru izveidosim programmu, kura izvads visus pra skaitus lietotja nordtaj intervl:
#!/usr/bin/python print "Ievadiet sakumu" sakums = input() print "Ievadiet beigas" beigas = input() print "Para skaitli intervala no", sakums, "lidz", beigas, ":" for skaitlis in xrange(sakums, beigas+1): if skaitlis%2==0: print skaitlis print "Tie bija visi para skaitli saja intervala."

Uzdevums: izskaidrojiet s programmas darbbu!

20

Programmanas valoda Python iescjiem

Saraksti
Programmanas valod Python ir vl kda iespja informcijas saglabanai saraksti. Saraksti ir secgi (rind) izvietoti elementi ar kopgu nosaukumu. Elements var bt skaitliska vrtba vai teksta rinda. Sarakstus pieraksta form
[elements1, elements2, ..., elementsn] a = [1, 2] b = [21, junijs, 2005] c = a+b

Piemram, sarakstu ir iespjams izveidot di: Tpat ir iespjams apvienot sarakstus (ldzgi, k teksta rindas):

Uzdevums: kds bs saraksta c saturs?

Ldzgi, k ar teksta rindm, no sarakstiem ir iespjams izgriezt elementus pc to atstarpju numuriem:


#!/usr/bin/python saraksts = [1,2,3,4,5] print saraksts[3] print saraksts[2:5] print saraksts[4:] 4 [3, 4, 5] [5]

Programmas darbbas rezultts bs

Aplkosim citas darbbas, kuras iespjams veikt ar sarakstiem:


#!/usr/bin/python saraksts = [1,2,3,4,4,5] print "Saraksts:", saraksts # Elementu skaits print "Elementu ar vertibu 4 skaits saraksta:", saraksts.count(4) # Elementu pievienosana saraksts.append(6) print "Saraksts pec pievienosanas:", saraksts # Elementu dzesana # Tiek dzests pirmais elements ar vertibu 4 saraksts.remove(4) print "Saraksts pec dzesanas:", saraksts # Elementu aizvietosana saraksts[0]=0 print "Saraksts pec aizvietosanas:", saraksts

Uzdevums: izskaidrojiet darbbas principu katrai no veiktajm opercijm!

Papildus tam, izmantojot funkcijas no Python modua string, iespjams sadalt teksta rindu sarakst, k ar sarakstu savienot vien teksta rind:

21

Programmanas valoda Python iescjiem


#!/usr/bin/python import string teksts = "1,2,3,4,5" print teksts # Sadalam teksta rindu. Ka elementu atdalitajs tiek izmantots komats. saraksts = string.split(teksts, ",") print saraksts # Apvienojam sarakstu viena teksta rinda. # Ka elementu atdalitaju izmantosim simbolu / apvienotais=string.join(saraksts, "/") print apvienotais

Programmas darbbas rezultts bs


1,2,3,4,5 ['1', '2', '3', '4', '5'] 1/2/3/4/5

Uzdevums: izskaidrojiet abu operciju darbbas principus!

22

Programmanas valoda Python iescjiem

Regulras izteiksmes
Apstrdjot teksta rindas, biei gads, ka apstrdjamie dati ir doti kd noteikt formt. Piemram:

Sastdta plna punkti skas ar punkta numuru, pc k seko aizvero iekava un punkta teksts (piemram, 1) aiziet uz veikalu); Programmas teksts valod Python ar ir sagatavots pc stingriem gramatikas likumiem, piemram, funkcijas defincija skas ar atslgvrdu def; Datums latvieu valod tiek pierakstts form diena.mnesis.gads, piemram 18.06.2005.

ajos piemros nordto informciju iespjams sameklt un apstrdt, izmantojot konkrt informcijas pieraksta pazmes. Lai s pazmes pieraksttu, tiek izmantotas regulrs izteiksmes. Regulra izteiksme t ir formula, kuru iespjams izmantot, lai teksta rind atrastu teksta fragmentu pc noteikta ablona. Funkcijas darbam ar regulrajm izteiksmm ir iebvtas Python modul re (regular expressions). Regulrajs izteiksms tiek izmantoti pai apzmjumi, no kuriem populrkie nordti tabul: Simbols . ^ $ * + ? {m,n} [...] [^...] \ Nozme jebkur viens simbols rindas skums rindas beigas iepriek nordt fragmenta atkrtoans 0 vai vairk reizes tas pats, tikai vismaz 1 reizi iepriek nordt fragmenta atkrtons 0 vai 1 reizi iepriek nordt fragmenta atkrtoans no m ldz n reizm jebkur simbols no simbolu kopas kvadrtiekavs jebkur simbols, kur nepieder simbolu kopai kvadrtiekavs ar simbola paldzbu iespjams atcelt nkam simbola specilo nozmi. Piemram, simbols . pats par sevi ir ar specilu nozmi (jebkur viens simbols), bet simboli \. nozm . bez specilas nozmes loiskais VAI simbols pa kreisi vai pa labi no simbola

Piemri regulrm izteiksmm:

23

Programmanas valoda Python iescjiem

ablons

Piemri teksta rindm, kas atbilst ablonam jebkur teksts

Piemri teksta rindm, kas neatbilst ablonam

Piezmes

.*

jebkuru reiu skaitu atkrtojas jebkur simbols ce, abcd rinda, kura nav tuka un sastv no simboliem a, b vai c rinda, kura nav tuka un sastv no mazajiem latu alfabta burtiem

[abc]+ a, abab, abba, abc [a-z]+ aakkaa, xyz, python

piemers1, 2

^[0-9] 1rinda, 22 teksts1, r rinda, kura skas ar ciparu Izveidosim programmu, kura aizstj visus skaitus rind ar simbolu *:
#!/usr/bin/python import re teksts = "10, 23; 123 (127/2)" apstradats = re.sub("[0-9]+", "*", teksts) print apstradats

Programmas darbbas rezultts bs


*, *; * (*/*)

K redzam, funkcijas re.sub veikt darbba ir ldzga, k string.replace, tikai viena fiksta ablona viet auj izmantot regulru izteiksmi.

Uzdevums: izskaidrojiet programmas darbbu!

Ldzgi darbojas ar funkcija re.search:


#!/usr/bin/python import re teksts = "10b klase" apstradats = re.search("^[0-9]+([a-d]).+$", teksts, re.MULTILINE) print apstradats.group(1)

s programmas rezultts bs
b

t.i., klases indeksa burts. Mekljam regulr izteiksme nordta iekavs ([a-d]); prj izteiksmes daa ir meklanas konteksts, kur atrodama mekljam izteiksme. eit mums noderja rindas skuma un beigu nordanas simboli ^ un $. Meklanas rezultts tiek ierakstts maingaj apstradats. Ja nordtas vairkas mekljams izteiksmes, ar rezultti var bt vairki. Tiem iespjams piekt pc indeksiem:
apstradats.group(1) apstradats.group(2)

Uzdevums: izdomjiet un izveidojiet piemru programmai, kur meklanai regulr izteiksm ir vairki rezultti!

24

Programmanas valoda Python iescjiem

Vrdncas
Sadzv biei nkas saskarties ar jdzienu vrdnca gan, lietojot adreu grmatiu, kur pc drauga vai pazias uzvrda un vrda varam atrast via adresi un tlrua numuru, gan, mekljot informciju enciklopdij, gan, protams, lietotojot visparastko angu-latvieu vrdncu. Valod Python vrdnca nozm sasaisti starp atslgm (keys) un vrtbm (values), pie kam katrai atslgai ir viena un tikai viena unikla vrtba. Vrdncas shematiskais pieraksts ir ds:
{ atslga1: vrtba1, atslga2: vrtba2, ... }

Piemram:

#!/usr/bin/python vardnica = { "one": "viens", "two": "divi", "three": "tris" } # Izdrukajam tulkojumu vardam "one" print "One:", vardnica["one"] # Pievienojam tulkojumu vardam "zero" un to izdrukajam vardnica["zero"]="nulle" print vardnica["zero"] # Izdzesam tulkojumu vardam "three" del vardnica["three"]

Uzdevums: izskaidrojiet s programmas darbbu!

25

Programmanas valoda Python iescjiem

Rezulttu formatana
Biei var bt nepiecieams specili noformt maingos, lai tos skaisti izvadtu uz ekrna. To iespjams veikt di:
formta rinda % (maingie)

Formta rinda var saturt dus (bet ne tikai dus) formatanas elementus: %% - % %i vesels skaitlis %s teksta rinda %f daskaitlis \n rindas prnesums Piemram:
#!/usr/bin/python skaitlis1=1 skaitlis2=2 teksts="%i+%i=%i\n" % (skaitlis1, skaitlis2, skaitlis1+skaitlis2) print teksts

Uzdevums: kds bs s programmas darbbas rezultts?

26

Programmanas valoda Python iescjiem

Darbs ar failiem
Ldz im ms nevarjm izveidot neko nopietnu td, ka msu programmas nespja strdt ar failiem. Fails t ir baitu (datu) virkne, kura tiek uzglabta rj atmi (piemram, cietaj disk vai kompaktdisk) un pie kuras iespjams piekt pc ts nosaukuma. Datus no faila iespjams nolast, k ar taj ierakstt, tomr pirms t failu jatver (open) un pc darba beigm jaizver (close). Vienkrs piemrs programmai, kura ieraksta informciju fail:
#!/usr/bin/python fails = open("tests.txt", "wt") for klase in xrange(1,13): fails.write("%i.klase\n" % (klase)) fails.close

Uzdevums: kds bs faila tests.txt saturs? Izskaidrojiet programmas darbbu!

Ieraksttos datus ir iespjams ar nolast no faila:


#!/usr/bin/python fails = open("tests.txt", "rt") rinda = fails.readline() while rinda!="": print rinda rinda = fails.readline() fails.close

Uzdevums: izskaidrojiet programmas darbbu!

Atverot failu, funkcijai open jnorda divi argumenti: faila nosaukums un faila atvranas rems. Praks darbam ar teksta failiem visbiek tiek izmantoti divi remi rt (read text teksta lasanas) un wt (write text teksta rakstanas).

27

Programmanas valoda Python iescjiem

aj grmat sniegt informcija ir minimlais nepiecieamais, lai vartu skt apgt programmanas valodu Python. Papildinformciju par Python iespjams iegt Internet tkl http://www.python.org. Saretki Python aspekti kdu apstrde, objektorientt programmana u.c. tiks aplkoti nkamaj grmat.

28

You might also like