Kraps123 - TalTech



T??lehed Pythoni materjali juurdeSisu TOC \o "1-1" \h \z \u Python. Avaldised PAGEREF _Toc358218332 \h 3Pythoni laused. Moodulid PAGEREF _Toc358218333 \h 4Python. Ideaal PAGEREF _Toc358218334 \h 5Python. Funktsioonid PAGEREF _Toc358218335 \h 6Python. Kordused PAGEREF _Toc358218336 \h 7Python. Rehmaatika PAGEREF _Toc358218337 \h 8Python. Tekstiavaldised PAGEREF _Toc358218338 \h 9Python. Algoritme loenditega PAGEREF _Toc358218339 \h 10Python. S?nastik PAGEREF _Toc358218340 \h 11Pyhton. Edetabel PAGEREF _Toc358218341 \h 12Ristkülik ja ring Pythonis PAGEREF _Toc358218342 \h 13Python. Funktsiooni parameetrid PAGEREF _Toc358218343 \h 14Python. Funktsioonide uurimine PAGEREF _Toc358218344 \h 15Pythoni funktsioonid (meetodid) moodulis turtle.py PAGEREF _Toc358218345 \h 16Python. Avaldised Vt. ka ja ?pik () lk 9.506412543815Programmide sisestamiseks, redigeerimiseks ja t?itmiseks kasutame siin interaktiivset kasutajaliidest IDLE (Interactive DeveLopment Environment), mille haldur kuulub Pythoni p?hikomplekti.IDLE k?ivitamiseks v?ib kasutada Windowsi Start-menüüst korraldustStart > Programs > Python 3.x > IDLE (Python GUI) v?i tippida Start-menüü otsiv?lja py... ja valida IDLE (Python GUI).Kuvatakse interaktiivse kasutajaliidese aken Python Shell.1905038735 Shelli aknasse (k?suaknasse) v?ljastatakse tulemused ja teated. Akent v?ib kasutada interaktiivseteks arvutusteks nn kalkulaatori re?iimis. K?sureale, mille alguses on sümbolid >>>, saab sisestada v??rtusi, avaldisi, lauseid ja programmi fragmente.Selline t??re?iim v?imaldab mitmesuguste operatiivsete arvutuste tegemist ning korralduste andmist n?iteks programmide silumiseks, aga ka keelevahenditega tutvumiseks.M?rkandmete p?hitüüpideks ehk -klassideks on:stringid (tekstid) – str, t?isarvud – int, ujupunktarvud (reaalarvud) – float, t?ev??rtused – bool.Arvkonstandid ja loogikakonstandid (True, False) esitatakse programmis ilma piirajateta. Koma asemel on arvu murdosa eraldajaks punkt.Tekst- ehk stringkonstandid paigutakse nn piirajate jutum?rkide (“tekst“) v?i ülakomade (’tekst’) vahele. Piirajad konstandi v??rtuse hulka ei kuulu. Jutum?rgid ja ülakomad on piirajatena samav??rsed ja peavad ühe konstandi jaoks olema samad; neid v?ib kasutada üksteise sees, kui üks neist peaks sisalduma tekstikonstandis. Kasutatakse ka kolmekordsete piirajate """ v?i ''' vahel asuvaid stringe. V??rtus v?ib paikneda mitmel real ja t?ita n?iteks ka pikema kommentaari rolli. Erisümbolid tekstis: \n (reavahetus), \t (tabulaator). Tehetes ehk operatsioonides kasutatakse j?rgmisi operaatoreid (tehtem?rke): aritmeetikatehted:** (astendamine)* (korrutamine)/ (jagamine)// (t?isarvuline jagamine)% (j??k)+?(liitmine)- (lahutamine)stringitehted: + tekstide ühendamine (sidurdamine)* teksti kordamine (operandideks tekst ja t?isarv)v?rdlustehted: == , != , < , <= , > , >= loogikatehted: not, and, or Aritmeetika- ja loogikatehted on siin prioriteetide kahanemise j?rjekorras.?lesanne: Proovida k?suaknas (Shelli aknas) avaldiste koostamist ja omistamislauseid.Avaldiste n?iteid proovimiseks: 2 + 3 * 6(2 + 3) * 6 / 33 ** 268 / 568 // 5 68 % 5 #j??k"auto" + "123" "123" * 5 2 * "midagi"3 == 43 == "3"4 < 62<4 < 6 2<4 and 4<6Muutuja on m?luv?li ühe v??rtuse s?ilitamiseks.Muutuja omadused on: nimi, v??rtus, tüüp, skoop (m?jupiirkond)Nimi on t?htede, numbrite ja allkriipsude (_) jada, mis peab algama t?hega (v?i allkriipsuga). Python on t?stutundlik – nimedes eristatakse suur- ja v?iketahti. Muutujaid ei kirjeldata, tüüp m??ratakse omistatud v??rtuse j?rgi. Omistamism?rgiks (operaatoriks) on Pythonis =Omistamislausete n?iteid proovimiseksa = 2b = 4 ** 3c = a + bt = "abc"u = "123"koos = u + tL = "auto"< "maja"K = 'p?ike'>="kuu"koos = L and KT?iendatud omistamine, operaator omistamism?rgi ees n?itab muutust sama muutuja v??rtuses:n += 1 (sama, mis n = n+1)a *= 3 (sama, mis a = a*3)Mitmene omistamine: mitu = summa = nr = 0 (sobib algv??rtustamiseks)a, b, c = 2, 2.5, len(tekst)*2 (muutujate arv omistamislause vasakus pooles ja v??rtuste arv lause paremas pooles peavad olema vastavuses)M?ned Pythoni funktsioonid: Nurksulud [xxxx] t?hendavad, et vastav element ei ole kohustuslik, punktiir – element v?ib korduda.type(muutuja) – n?itab v??rtuse v?i muutuja tüüpi. Teisendusfunktsioonid int(), float(), str() muudavad tüüpi.input([selgitav tekst]) – kuvab teate ja loeb v??rtuse (tagastatava v??rtuse tüübiks tekst).print([objekt, ...], *, sep=' ', end='\n', file=sys.stdout) – v??rtuste (tekstide) v?ljastamine ekraanile/faili.dir() – kasutusel olevatest muutujate, funktsioonide jm nimeddir(objekt) – objekti omadused ja meetodid.Proovida omistamislauseid (t?isarv, reaalarv, tekst), vaadata tüüpi. Muuta tekst arvuks ja vastupidi: float(tekst), int(tekst), str(arv).Pythoni laused. MoodulidSuurem osa funktsioone paikneb moodulites (eraldi failides), mis tuleb p?himooduliga siduda:import mooduli_nimi - mooduli funktsioone ja konstante saab kasutada kujul mooduli_nimi.fn()from mooduli_nimi import * - saab kasutada k?iki mooduli funktsioone ilma mooduli nime lisamatafrom mooduli_nimi import fn_nimi - moodulist saab kasutada ainult funktsiooni fn_nimiVt. ka ?pik () lk. 11-13.P?hiosa matemaatikafunktsioone asub moodulis math.?lesanne: Kopeerida programm Pythoni programmiredaktorisse ja proovida k?ivitada. Ristküliku külgede j?rgi leitakse sama suure pindalaga ringi l?bim??t ning kujundite ümberm??tude suhe. Pythonis v?ljastatakse tulemused print-k?su (print-funktsiooni) abil k?suaknasse (shelli aknasse). Funktsiooni input (v?imaldab programmil küsida andmeid kasutajalt) v?ljund on tekst, seep?rast tuleb arvutuste tegemiseks teisendada v??rtus arvuks.NB! Arvus on t?is- ja murdosa eraldajaks punkt. Koma kasutatakse eraldajana loetelus.import mathprint ("V?rdse pindalaga ristkülik ja ring")a = float (input ("Anna laius => ")) # algandmete sisestamineb = float (input ("Anna k?rgus => ")) # S = a * bP = 2 * (a + b) # pindala ja ümberm??t d = math.sqrt(4 * S / math.pi) # l?bim??t suhe = P / (math.pi * d)print ("pindala=", S) # tulemuste print ("l?bim??t=", round(d, 3)) # v?ljastamine print ("suhe=", round(suhe, 2)) # Shelli aknasse ?lesanne: Eelmises n?ites asendada import math k?suga from math import * ja teha vastavad muudatused tekstis.Süntaksivigade puhul n?itab programmiredaktor probleemset kohta. Programmi t?itmisel ilmnevate vigade kohta antakse info (veateade, rea nr, lause tekst) shelli aknas. 4461510186055h1h2rbca?lesanne:Koostada Pythoni programm k?rvaloleva kujundi ümberm??du ja pindala arvutamiseks. M??tude v??rtused küsida kasutajalt.Tulemusi saab kontrollida alloleva tabeli abil.jrkh1h2abcrPS135312,8122,58210,5582534241,526,92310,93138451,83236,31732,034410760,722,845,82854,970512572,554,253,00133,582Ristkülik ja ring PythonisKoostada rakendus, mis leiab etteantud ristküliku külgede abil sama suure pindalaga ringi raadiuse ja joonestab m?lemad kujundid. Leida ka kujundite ümberm??tude suhe. Joonistamisel tuleks kasutada sobivat mastaabitegurit.Antud on ristküliku küljed a ja b (küsida kasutajalt, vt fn turtle.numinput()).Leida tuleb ristküliku pindala S, mis on ühtlasi ka ringi pindala, ja ringi raadius?r.Tuletada meelde valemid ristküliku ja ringi pindalade leidmiseks. Kuidas leida ringi pindala j?rgi ringi raadius?Pythoni kooseisu kuulub moodul turtle, mis sisaldab nn ?kilpkonnagraafika“ vahendeid. Joonestamise operatsioone t?idab spetsiaalne graafikaobjekt – turtle (kilpkonn) – Scratchi spraidi analoog. Kilpkonni (objekte) v?ib olla mitu ja neil v?ivad olla erinevad kujud. Vaikimisi on kilpkonni üks ja sellel on nooletaoline kuju. Kilpkonnaga on seotud pliiats ja objektil on suur hulk meetodeid, mille abil saab seda liigutada, p??rata, muuta pliiatsi suurust, v?rvust jms.M?ned funktsioonid(meetodid) Pythoni moodulist turtle.py:Objekti liikumine:forward() | fd()liigu edasi backward() | bk() | back()liigu tagasiright() | rt()p??ra paremaleleft() | lt()p??ra vasakulegoto() | setpos()mine(x,y)setx(), sety()m??ra x, m??ra ysetheading() | seth()m??ra nurkhome()mine(0, 0), nurk 0circle()ring(raadius, kaar=360, hnurk)dot()punkt; ette anda diameeter, v?rvundo()eelmise tegevuse tühistaminespeed()animatsiooni kiirus 1..10 v?i 0Objekti omadused:position() | pos()asukohttowards()suund (etteantud punkti poole)xcor(), ycor()x-asukoht, y-asukohtheading()nurkdistance()kaugus punktist v?i teisest obj.sttextinput() v??rtuse lugemine, tulemi tüüp strnuminput() v??rtuse lugemine, tulemi tüüp floatPliiatsi seaded:pendown() | pd() | down()pliiats allapenup() | pu() | up()pliiats ülespensize() | width()pliiatsi suurusisdown()kas pliiats allcolor()v?rv (joon, taust)pencolor()joone v?rvfillcolor()tausta v?rvfilling()kas toimub kujundi t?itminebegin_fill()t?itmise algusend_fill()t?itmise l?ppreset()joonise kustutamine, algseadedclear()joonise kustutaminewrite()objekt kirjutab tekstiGraafikaakna seadedbye()graafikaakna sulgemineexitonclick()akna sulgemine hiirekl?psugasetup()akna suurus (laius, k?rgus) ja asukohttitle()tekst akna p?isesKui programmis on joonistamisk?ske, kuvatakse automaatselt graafikaaken Python Turtle Graphics.Programmis saab m??rata akna suuruse. Kui seda ei tehta, valib süsteem m??tmed ise, arvestades arvutiekraani suurust. M??tühikuks on piksel. Koordinaatsüsteemi nullpunkt on akna keskel.Python. ValikulausedValikulaused (If-laused) v?imaldavad tegevuste t?itmist v?i vahelej?tmist s?ltuvalt etteantud tingimustest.Tingimused esitatakse v?rdluste v?i loogikaavaldiste abil.if (tingimus): if_laused [ elif (tingimus): elif_laused ] … [ else : else_laused ]Lause t?itmisel kontrollitakse k?igepealt tingimust if?osalauses, kui see on t?ene, t?idetakse if-ploki laused, k?ik ülej??nu kuni valikulause l?puni j??b vaheleVastupidisel juhul kontrollitakse j?rjest tingimusi elif-lausetes (kui neid on) ning kui leitakse esimene t?ene, t?idetakse selle ploki laused ning j?tkatakse if-lausele j?rgnevast lausestKui ükski tingimus pole t?ene, t?idetakse else-ploki laused (kui need on)Pythonis ei ole spetsiaalseid piirajaid! V?rdse taandega laused moodustavad ploki.arv = int(input ("sisesta arv: "))if arv > 0: print ("see on positiivne arv")elif arv < 0: print ("see on positiivne arv")else: print ("see arv on ju null!")Koostada v?i kopeerida k?rvalolev skript Pythoni tekstieditori aknasse (ctrl+n – uus tekstiaken)salvestada fail (laiend .py) k?ivitada (F5 v?i Run/Run?Module)NB! kopeerimisel v?ivad tekkida probleemid taanetegaProovida seda ja ka j?rgnevat skripti k?ivitada Pythoni programmide visualiseerimisvahendiga ("Tere! Olen Python!")# teate kuvaminenimi = input("Mis on Sinu nimi => ")# v??rtuse lugemineprint (nimi, '? Oi kui ilus nimi!!!')teade = "! Kas leian Sinu keha indeksi? 0 – ei, 1 – jah => "vastus = input (nimi + teade)if int (vastus) == 0 :# koolon peab kindlasti olema print ("Kahju! See on jube kasulik info!")else : pikkus = int(input(nimi + "! Sinu pikkus (cm) => ")) mass = float(input("Anna kaal ka (kg) => ")) indeks = mass /(0.01 * pikkus)**2 print (nimi,"! Sinu keha indeks on:", round(indeks, 1))print ()# tühi rida (reavahetus)print ('Kohtumiseni, ' + nimi + '! Igavesti Sinu, Python!')Python. IdeaalKoostada Pythonis rakendus inimese keha omaduste leidmiseks.Inimese soo (mees/naine), vanuse t (aastates), pikkuse l (cm) ja kaalu m (kg) alusel tuleb alltoodud valemite abil arvutada ideaalne mass mid?(kg), rasvaprotsent r, kehamassi indeks kind, tihedus??(kg/m3), ruumala V (dm3), pindala S (m2) ning anda kehamassi indeksi alusel s?naline hinnang.Algandmed küsida kasutajalt (sisestada klaviatuurilt), tulemus n?idata ekraanil (shelli aknas).Saadud tulemust v?ib v?rrelda alloleva tabeli andmetega.SuguNMMNVanus22206037Pikkus165180175160cmKaal48709078kgIdeaalne mass55,672,578,855,6kgRasvaprotsent6,211,427,550,8%Kehamassiindeks17,621,629,430,5Tihedus1086,91076,01042,3993,4kg/m3Ruumala44,265,186,478,5dm3Pindala1,51,92,11,9m2Hinnangk?hnnormaalneülekaalusei v?i olla!Python. FunktsioonidOsa rakendusest on otstarbekas vormistada eraldi protseduuri(de)na, mida on v?imalik kasutada erinevate algandmetega.Pythonis algab funktsiooni p?is v?tmes?naga def, j?rgneb nimi ja sulgudes parameetrite loetelu (tühjad sulud peavad olema ka siis, kui parameetrid puuduvad), l?pus koolon. Parameetrid on muutujad, mis saavad v??rtuse funktsiooni poole p??rdumisel.K?ik funktsiooni laused paiknevad p?ise suhtes taandega. Lause return avaldis(ed) l?petab funktsiooni t?? ja tagastab v??rtuse(d).def nimi ([parameetrid]): laused [ return avaldis ]…funktsiooni n?idedef summa(a, b): return a+bkasutamine s = summa(4, 6)def summa_korrutis(a, b): S = a+b K = a*b return S, Karv1 = 5arv2 = int(input(“Sisesta arv: “))sum, kor = summa_korrutis(arv1, arv2)P??rdumine funktsiooni poole: [muutuja = ] nimi ([argumendid]) , muutuja on vajalik, kui funktsioon tagastab v??rtuse. Argumentide arv, tüüp ja j?rjekord peavad vastama parameetritele. Koostada n?idete j?rgi paar funktsiooni ja proovida neid kasutada nii k?suaknas kui skriptis.Koostada alltoodud valemite j?rgi kaks funktsiooni:rasvaprotsendi leidmine etteantud soo (mees/naine), vanuse t (aastates), pikkuse l (cm) ja kaalu m (kg) aluselhinnangu andmine pikkuse l (cm) ja kaalu m (kg) aluselSuguNMMNVanus22206037Pikkus165180175160cmKaal48709078kgRasvaprotsent6,211,427,550,8%Hinnangk?hnnormaalneülekaalusei v?i olla!Python. KordusedKorduste kirjeldamiseks on Pythonis kaks liitlauset: while-lause ja for-lause. Korduse t?itmise katkestab k?sk break, k?sk continue j?tkab korduse t?itmist j?rgmisest korduse sammust.while-lause: lauseid t?idetakse, kui tingimus on t?eneL?pmatu korduse tekitamiseks kirjutada alati t?ene tingimus – while True:while tingimus : [laused_1] [if tingimus1: break] [laused_2]kordus kui tingimus laused [kui tingimus1 siis katkesta] laused Tutvuda allolevate korduslausetega. Proovida Pythonis.k = int(input(“Stardiloendus algab arvuga: “))print ("Valmis olla!")while k > 0 : print (k) k = k - 1print ("Start!")def Fy(x) : return 3*math.sin(2*x + 1)def tab_2(a, b, h) : x = a while x <= b + h/2 : print (x,"\t", round(Fy(x), 5)) x = x + htab_2(-5, 5, 1) for-lause:for element in jada : [laused] [if tingimus : break] [laused] kordus iga element jada-s tegevused kui tingimus siis katkesta tegevusedJada v?ib esitada v??rtuste v?i objektide loeteluna, loendina, range funktsiooni abil jm. Lauseid t?idetakse jada iga elemendi korral. Funktsiooniga range saab m??rata t?isarvude jada: range([algus,] l?pp [, samm])vaikimisi: algus = 0, samm = 1. NB! jada viimane v??rtus on alati v?iksem kui l?pp.Tutvuda j?rgmiste korduslausetega. Proovida Pythonis. Shelli aknas peaks print-lausete tulemustena tekkima allolevad arvujadad. "\t" - tabulaatorfor x in 7, -3, 2.1, 13, -5 : print (x, "\t", 2 * x + 3)for x in range (5) : print (x, "\t", 2 * x + 3)for x in range (1, 11, 2) : print (x, "\t", 2 * x + 37 17-3 -32.1 7.213 29-5 -70 31 52 73 94 111 53 95 137 179 21for x in (7, -3, 2.1, 13, -5): print (x, "\t", 2 * x + 3)7 17-3 -32.1 7.213 29-5 -7def Fy(x) : return 3*math.sin(2*x + 1)def tab_1(a, b, n) : h = (b - a) / n for i in range(n + 1) : x = a + i * h print (x,"\t", round(Fy(x), 5)) tab_1(-5, 5, 10) Lihtsaid ülesandeid kordus- ja valikulausetegaSiin on toodud skript kasutajalt küsitud arvude t??tlemiseks. Eraldi leitakse positiivsete ja negatiivsete arvude keskmised, selleks arvutatakse jooksvalt sobivate arvude summad ja nende arv. ?lesanne:kopeerida skript# positiivsete ja negatiivsete keskminen = input("Mitu arvu ") SP = np = SN = nn = 0for k in range(n): # for-lause p?is a = float (input("anna arv ")) if a > 0 : # if-lause p?is SP = SP + a np += 1 # np = np + 1 else : # else-lause p?is SN = SN + a nn += 1if np != 0 : print ("Positiivsete keskmine = ", SP / np) if nn != 0 : print ("Negatiivsete keskmine = ", SN / nn) # v?ib ka nii (samal real)Python. RehmaatikaKoostada etteantud algoritmi j?rgi rakendus, mis v?imaldab harjutada liitmist ja lahutamist.Programm kuvab etteantud arvu tehteid, annab punkte ?igete vastuse eest ja m??dab aega. Kasutaja peab v?imalikult kiiresti sisestama vastused.Arvud ja tehe tekitakse juhuarvude abil. NB! Peavad olema ainult positiivsed arvud (ka vastus). Kasutaja valib taseme, millest s?ltub tehetes kasutatavate arvude suurus ja punktide arv ?ige vastuse eest.Etteantud tehete arvu t?itumisel kuvatakse testile kulunud aeg.tase – tehete raskusaste mini ja maxi - arvude v?ikseim ja suurim v??rtus, n?iteks: 1. tase: 1...10, 2. tase: 10...20, 3. tase: 20...50 a ja b - juhuarvud vahemikus mini...maxi, c = a + btehe - juhuarv: 1 - liitmine, 2 - lahutamine tulem - c kui liitmine, a - kui lahutamine vastus - kasutaja vastus punkte - punktide jooksev ja l?plik summap - punkte ühe tehte eest, s?ltub tasemest n?iteks: 1. tase - p = 2, 2. tase p = 5; 3. tase p = 10 algaeg - alguse aeg, aeg - testi aegMoodulis time on funktsioonid clock() – jooksev aeg (taimer) ja sleep(pp) – paus pp sekundit.Moodulis random on funktsioon randint(a,b) - juhuslik t?isarv etteantud vahemikus.Muutujate min, max ja p v??rtuse m??ramine olenevalt tasemest v?iks olla eraldi funktsioon (tagastab kolm v??rtust). loe n punkte = 0 kutsu Tee_Tase => mini, maxi, p algaeg = timer() # time.clock() kordus n korda a = juhuarv (mini, maxi) b = juhuarv (mini, maxi) c = a + b tehe = juhuarv(1, 2) kui tehe = 1 siis kuva a & " + " & b tulem = c muidu kuva c & " - " & a tulem = b loe vastus kui vastus = tulem siis punkte = punkte + p muidu kuva "Vale!" l?pp kordus kuva punkte, aeg Python. TekstiavaldisedKoostada Pythonis funktsioonid etteantud teksti esitamiseks tagurpidi. sümbolid vastupidises j?rjestusess?nad vastupidises j?rjestuses.Tekstikonstant paigutatakse jutum?rkide v?i ülakomade vahele (“teksti“, ’konstant’); Erisümbolid: \n (reavahetus), \t (tabulaator); + tekstide ühendamine (sidurdamine); * teksti kordamine (operandideks tekst ja t?isarv)len(tekstiavaldis) – teksti pikkus (sümbolite arv tekstis)tekstist sümbolite eraldamiseks kasutatakse j?rjenumbreid (algavad 0-st) nurksulgudes:tekst[i], tekst[a:b], tekst[2:4], tekst[:i], tekst[i:], tekst[-1], tekst[:-3]M?ned stringide meetodid:str.count (a_str) – loendab alamstringi esinemise arvu stringisstr.find (a_str) – leiab alamstringi alguse stringis (j?rjenumbri e indeksi)str.lower (),str.upper () – teisendab teksti koopia v?ike- v?i suurt?htedeksstr.lstrip(), str.rstrip(), str.strip() – eemaldab juhtsümbolid vasakult, paremalt v?i k?ikstr.split() – jagab lause s?nadeks, moodustades loendifunktsioon tagurpidi(tekst1)mitu = pikkus(tekst1)tekst2 = ’’nr = mituKordus mitu kordas = tekst1 nr-s t?httekst2 = ühenda tekst2 ja snr = nr – 1L?pp kordustagasta tekst2 funktsioon tagurpidi_s?nad(tekst1)mitu = pikkus(tekst1)tekst2 = ’’tekst3 = ’’nr = 1kordus mitu kordas = tekst1 nr-s t?htkui pole s = ’ ’tekst3 = ühenda tekst3 ja smuidukui tekst2 = ’’tekst2 = tekst3muidutekst2 = ühenda tekst3 ja tühik ja tekst2l?pp kuiTekst3 = ’’l?pp kuinr = nr + 1l?pp korduskui tekst2 = ’’tekst2 = tekst3muidutekst2 = ühenda tekst3 ja tühik ja tekst2tekst3 = ’’l?pp kuitagasta tekst2NB! Selle harjutuse (nagu ka paljude teiste harjutuste puhul) ei kasuta me k?iki Pythoni h?id v?imalusi. Programm v?iks j?rgida etteantud algoritmi.Python. Algoritme loenditegaMoodustada kaks loendit — puud ja hinnad.Hinnad v?iks genereerida kas juhuslikult v?i küsida igal k?ivitamisel uuesti kasutajalt.Koostada funktsioonid, mis leiavad:hindade aritmeetilise keskmisemaksimaalse hinna ja sellele vastava puuliigi nimetusePuudHinnadhaab120kask170kuusk230lepp160m?nd210saar310tamm350vaher330Lisaülesanne:Luua uus loend puuliikidest, mille hind on suurem etteantud v??rtusest (funktsioon tagastab loendi(d))Hindade aritmeetilise keskmise leidmisel tuleb k?igepealt leida hindade summa, liidetavate arvuks on loendi pikkus (v??rtuste arv).Sisend: loend Hinnad, n (v??rtuste arv loendis)V?ljund: keskmineAbi: S (summa), i (j?rjenumber)… S = 0 i = 0 n = Hinnad.pikkus kordus n korda S = S + Hinnad(i) i = i +1 l?pp kordus keskmine = S / n …Suurima v??rtuse leidmisel peab muutuja max v??rtuseks saama suurim loendi v??rtustest. Algul eeldame, et esimene v??rtustest on suurim, seej?rel v?rdleme max k?igi ülej??nud v??rtustega. Kui leidub m?ni suurem, omistatakse see muutujale max. Meelde tuleb j?tta ka suurima asukoht. Muutuja nr saab uue v??rtuse iga kord, kui muutub max.… max = Hinnad(0) nr = 1 k = 1 kordus n - 1 korda k = k +1 kui Hinnad(k) > max siis max = Hinnad(k) nr = k l?pp kui l?pp kordus puu = Puud(nr) …len(loend) – loendi pikkus (elementide arv loendis)loend[nr] – element j?rjenumbriga nr NB! j?rjenumbrid algavad 0-stdel(loend[2]) – j?rjenumbriga m??ratud v??rtuse kustutamine loendistM?ned loendite meetodid:loend.append(x) – Lisab x-i (v??rtus v?i objekt) loendi l?ppuloend.extend(L) – lisab antud loendi teise loendi l?ppu. loend.insert(i, x) – lisab x loendisse j?rjenumbriga m??ratud elemendi etteloend.remove(x) – eemaldab loendist esimese x v??rtuseloend.pop([i]) – loeb antud j?rjenumbriga v??rtuse, ühtlasi eemaldab selle loendistloend.index(x) – tagastab x-i asukoha (indeksi) loendisloend.sort() – sorteerib loendi elemendid kasvavas j?rjestusesloend.reverse() – loendi elemendid vastupidises j?rjestusesNB! Selle harjutuse (nagu ka paljude teiste harjutuste puhul) ei kasuta me k?iki Pythoni h?id v?imalusi (n?iteks funktsiooni max v?i loendi meetodit index). Programm v?iks j?rgida etteantud algoritme.Python. S?nastikTestAntud on s?nastik – kaks loendit. Koostada rakendus kasutaja teadmiste kontrollimiseks: küsida kasutajalt juhuslik inglisekeelne s?na, v?rrelda kasutaja antud vastust sama j?rjenumbriga v??rtusega eestikeelsete s?nade loendis ja ?elda, kas vastus on ?ige v?i vale. Loendada tuleb ka ?igete vastuste arv. ?igeid = 0 kordus i = juhuarv (1 kuni eesti.pikkus) küsi … loe vastus kui vastus = inglise(i) siis ?igeid = ?igeid + 1 ütle ??ige vastus!“ muidu ütle ?Vale vastus!“ l?pp kui L?pp kordusLisaülesandeid:vale vastuse korral küsitakse sama s?na uuestiloendada ka valede vastuste arvmuuta skripti nii, et s?nu küsitaks j?rjest – alates esimesest kuni viimaseni.T?lkimineAntud on s?nastik – kaks loendit. Koostada rakendus kasutaja antud s?na t?lkimiseks ühest keelest teise. Tegevuse kirjeldus: Kasutajalt küsitakse inglisekeelne s?na. Seej?rel tuleb ükshaaval j?rjest vaadata iga eestikeelset s?na (kordus ’loendi pikkus’ korda) ja v?rrelda antud s?naga. Kui leitakse, tuleb inglisekeelsete s?nade hulgast v?tta sama j?rjenumbriga s?na. Kui kogu loend on üle vaadatud, aga s?na ei leitud, tuleb ka seda teatada kasutajale.loe s?naj = 1kordus eesti.pikkus korda kui s?na = eesti(j) siis kuva inglise(j) stopp l?pp kui j = j + 1l?pp korduskuva "Sellist s?na minu s?nastikus ei ole”NB! Selle harjutuse (nagu ka paljude teiste harjutuste puhul) ei kasuta me esialgu k?iki Pythoni h?id v?imalusi (n?iteks loendi meetodit index). Programm v?iks j?rgida etteantud algoritme.loend = [v??rtus1, v??rtus2, ...]loend[nr] – element j?rjenumbriga nr NB! j?rjenumbrid algavad 0-stlen(loend) – loendi pikkus (elementide arv loendis)list(...)– loendi loomine j?rjendist, hulgast jmloend.append(x) – lisab x (v??rtus v?i objekt) loendi l?ppuV??rtuste lugemine failist loendisse (s?nade kaupa):f=open("eesti.txt", 'r')– faili avamine lugemisekseesti = f.read().split()– faili sisu lugemine ja osadeks jagamine, tulemuseks on loendf.close()– faili sulgeminePyhton. Andmed failidesMahukamaid andmeid on sageli otstarbekas hoida failides. Algandmed loetakse failist muutuja(te)sse (ühesuguse struktuuriga andmeid on mugav hoida n?iteks loendites), programmi t?? tulemused salvestatakse faili.Fail avatakse funktsiooniga open. Tulemuseks on failiobjekt, mille kaudu saab infot faili kohta ja andmeid lugeda/kirjutada.f = open(fnimi, t??tlusviis) f – objektimuutuja , fnimi – faili t?isnimi: [tee]nimi.laiend ’r’ – lugemine (vaikimisi), ’w’ – kirjutamine, ’a’ – lisamine, ’t’ – tekstire?iim (vaikimisi), ’b’ – kahendkood jmP?rast kasutamist tuleks fail sulgeda meetodiga close()f.close()Failiobjekti omadusi ja meetodeid: f.name – faili nimi f.close() – faili sulgemine f.closed – kas fail on suletud f.readable(), f.writable() – kas fail on lugemiseks / kirjutamiseksf.read() – k?igi andmete lugemine, tulemuseks tekst f.readline() – ühe kirje (rea) lugemine f.readlines() – kogu teksti lugemine kirjete kaupa loendisse f.seek() – lugemisviit nihutatakse etteantud kohta f.seekable() – kas lugemisviita on v?imalik nihutada f.tell() – lugemisviit – mitu sümbolit/baiti on loetud f.truncate() – faili tühjendamine f.write() – kirje (stringi) kirjutamine tekstifaili f.writelines() – loendi kirjutamine faili – ainult tekstid, elemendi l?pus soovitavalt ’\n’ print(v??rtus(ed), sep=’ ’, end=’\n’, file=f_obj) – tekstifaili kirjutamine (mugavam kui meetod write)Failis v?ib olla esitatud tabel: andmestik mis moodustub ridadest (kirjetest). K?igil kirjetel peaks olema ühesugune struktuur. Kirje koosneb ühest v?i mitmest v?ljast (v??rtusest), mis eraldatakse üksteisest mingi eraldajaga (tühik, tabulaator \t vm). V?ljade v??rtuste sees seda eraldajat ei ole. Reavahetuse sümbol kirje l?pus on \n. ?lesanne:Lugeda failidest eesti.txt ja inglise.txt v??rtused loenditesse. Kirjutada v??rtused uude tekstifaili nii, et sama t?hendusega s?nad on ühes reas (eraldajaks tühik).Lugeda v??rtused uuest failist. Moodustada:kaks loendit (eesti ja inglisekeelsed s?nad eraldi)üks loend, mille elemendid on s?napaarid (loendid)import os, os.pathos.getcwd() – t??kataloogos.path.exists(failinimi) – kas eksisteerib selline failtekst.split() – sringi meetod, mis jagab teksti osadeks, moodustades loendiPyhton. EdetabelKoostada Pythonis funktsioon, mis lisab edetabelisse (faili, kus hoitakse v?istlejate nimesid ja punktisummat punktide kahanemise j?rjestuses) sobivasse kohta uue kirje (nimi ja punktisumma).Edetabeli info loetakse failist loenditesse. Lisatakse antud katse andmed: kasutaja nimi ja saadud punktid, arvestades vajalikku kahanevat j?rjestustLoend kirjutatakse samasse faili, mis eelnevalt avatakse kirjutamiseks.Tekstifail koosneb kirjetest ehk ridadest. Kirje koosneb ühest v?i mitmest v?ljast, mis eraldatakse üksteisest mingi eraldajaga (tühik, tabulaator vm). V?lja sees tühikuid ei ole. Kirje l?pus on sageli (mitten?htav) reavahetuse sümbol \n. Faili avamine:f = open(f_nimi, t??tlusviis) f - objektimuutuja, viit faililef_nimi - faili t?isnimi: [tee]nimi.txt"w" - kirjutamine, "r" - lugemine (vaikimisi)Faili sulgemine: f.close()Andmete lugemine:a) faili lugemine korraga: loend = f.read()b) kirjete kaupa, meetodiga f.read()c) korduslauses: for kirje in f: [tegevused kirjega]Faili kirjutamine:a) f.write(string)b) print([objekt, ...], *, sep=' ', end='\n', file=f)prots lisa_etab(nimi, punkte) kui faili "edetabel.txt" pole, siis kirjuta faili nimi ja punkte tagasta 1 muidu nimed = [ ]; punktid = [ ] ava fail "edetabel.txt" kordus iga kirje jaoks failis elem = kirje v?ljad lisa nimedele elem[0] lisa punktidele elem[1] l?pp kordus sulge fail mitu = pikkus(nimed) kordus k = 0.. mitu-1 kui punkte < punktid[k] siis sisesta nimed [k] (nimi) sisesta punktid.[k] (punkte) v?lju kordusest l?pp kui l?pp kordus kui pikkus(nimed) = mitu siis lisa nimed (nimi) lisa punktid (punkte) k = k + 1 l?pp kui ava fail "edetabel,txt" kirjutamiseks kordus i = 0...pikkus(nimed) kirjuta faili (nimed[i]&’\t’&punktid[i]) & ’\n’) l?pp kordus sulge fail tagasta k Lisaülesanded:Edetabelifaili nimi v?iks olla ette antav (funktsiooni parameeter)Faili v?iks lisada ka j?rjenumbriimport os, os.pathos.getcwd() – t??kataloogos.path.exists(failinimi) – kas eksisteerib selline failtekst.split() – sringi meetod, mis jagab teksti s?nadeks, moodustades loendiPython. S?nastikudS?nastik (dictionary)S?nastik on andmetüüp loetelu jaoks: elementide poole p??rdutakse nimi[v?ti], v?ti (ik key) v?ib olla peale t?isarvu ka reaalarv, tekst, t?ev??rtus. S?nastiku moodustavad paarid v?ti:v??rtus, mis eraldatakse komadega. Piirajatena on kasutusel looksulud {}. S?nastik ei ole j?rjestatud.d = {v?ti1:v??rtus1, v?ti2:v??rtus2, ...}d = {}– tühja s?nastiku loominedict(...)– s?nastiku loominelen(d)– elementide arv s?nastikusd[v?ti] = v??rtus– uue elemendi loomine v?i vanale v??rtuse omistaminedel d[v?ti] – elemendi eemaldaminev?ti in d, v?ti not in d– kas selline v?ti on / ei ole s?nastikusd.clear() – s?nastiku tühjendamined.pop(v?ti)– kui v?ti on s?nastikus, tagastab sellele vastava v??rtuse ja eemaldab elemendid.keys()– k?ik v?tmed s?nastikustd.values()– k?ik v??rtused s?nastikust?lesanne:Lugeda failist tekst. Loendada iga sümboli esinemise arv tekstis ja esitada see nimekiri tabeli kujul shelli aknas.Lisaülesanne:esitada tabel shelli aknas kolmeveerulisena.Python. Funktsiooni parameetridSageli kasutatavad tegevused on otstarbekas vormistada funktsioonidena, mida saab kasutada erinevate algandmetega. Funktsiooni parameetrite hulk, tüübid ja j?rjekord tuleks valida nii, et funktsiooni oleks mugav kasutada. K?ikidele parameetritele ei pea funktsiooni poole p??rdumisel alati v??rtusi andma. Sellised parameetrid asuvad funktsiooni kirjelduses parameetrite loetelu l?pus ja neile on m??ratud vaikev??rtus (v??rtus, mis omistatakse parameetrile siis, kui sellele ei anta v??rtust p??rdumisel).N?iteks: def kiir(x, y, suund, pikkus, joon=1, v?rv=’black’?lesanne:Koostada Pythonis funktsioonid kujundite joonistamiseks. Valida sobiv parameetite hulk ja j?rjestus. Funktsioonide n?iteidRistkülikParameetrid:vasaku serva ja alumise serva asukohad (x, y), laius, k?rgus, joone ja tausta v?rvid ning joone laius (vaikev??rtustega).from turtle import *def ristkylik(x,y, laius, korgus,t_varv=0,j_varv=0,joon=0): penup() if joon!=0: pensize(joon) if type(j_varv)==str or type(j_varv)==tuple: pencolor(j_varv) if type(t_varv)==str or type(t_varv)==tuple: fillcolor(t_varv); begin_fill() setpos(x, y) #v?ib ka goto() pendown(); goto(x+laius,y); goto(x+laius, y+korgus) goto(x,y+korgus); goto(x,y); penup() if filling(): end_fill()Ring Parameetrid:keskpunkti asukoht (x, y)raadius rtunnus (kas t?ita) – vaikimisi v??rtus TrueV?rvid, joone paksuse jm v?ib m??rata varem, enne funktsiooni poole p??rdumist.def ring(x, y, r, tunnus=True): penup() seth(0); goto(x, y-r) pendown() if tunnus: begin_fill() circle(r) if filling(): end_fill() penup()Veel v?iks olla:joon, parameetriteks otspunktide koordinaadid, joone paksus ja v?rvjoon, parameetriteks alguspunkti koordinaadid, pikkus ja suundhorisontaalne joon, vertikaalne joon, parameetrid: algpunkti (v?i keskpunkti) koordinaadid, pikkus, v?rv jmellips (keskpunkt, laius, k?rgus)korrap?rane hulknurkjne?lesanne.Koostada rakendus, milles kasutatakse loodud funktsioone mingi kompositsiooni moodustamiseks. Kasutada kordus- ja valikulauseid, küsida andmeid kasutajalt.Funktsioonid v?ivad asuda eraldi failis. Oma rakendusele saab need lisada k?suga import.Python. Funktsioonide uurimineKoostada kolme funktsiooni graafikud kasutaja poolt valitud l?igul.Andmed: l?igu algus, l?igu l?pp, jaotiste arva - l?igu algus, b - l?igu l?pp, n - jaotiste arv: m??rab kasutaja; n v?iks olla 100...1000 x (0...n) - argumendi v??rtuste loendy1(0...n), y2(0...n), y3(0...n) - funktsioonide v??rtuste loendidKorraliku joonise saamiseks tuleks valida sobivad mastaabitegurid v?i kasutajakoordinaadid. Selleks on vaja teada k?ikide funktsioonide v?ikseimaid ja suurimaid v??rtusi. Argumendi ja funktsiooni v??rtuste mitmekordse arvutamise asemel on otstarbekas kord leitud v??rtused kirjutada loenditesse. Loendite moodustamine peaks olema eraldi funktsioon.Suurima ja v?ikseima v??rtuse j?rjenumbri leidmiseks kasutada vastavaid omaloodud funktsioone v?i standardfunktsioone min() ja max().Joonise tegemiseks saab kasutada funktsioone Pythoni moodulist turtle.py:pendown() | pd() | down()# pliiats allapenup() | pu() | up()# pliiats ülespensize() | width()# pliiatsi suuruspencolor()# joone v?rvfillcolor()# tausta v?rvgoto() | setpos()# mine(x,y)dot()# punkt (diameeter, v?rv)clone()# objekti (kilpkonna) teisiku loominegetturtle()# viit esmasele (anonüümsele) objektileturtles()# k?igi kilpkonnade (objektide) hulksetworldcoordinates() # koordinaadid (x1,y1, x2, y2)setup()# akna suurus (laius, k?rgus) ja asukoht (x, y)title()# tekst akna p?isesLisaülesanded:Leida ja m?rkida graafiku x-teljel iga funktsiooni miinimumi ja maksimumi asukohad ning kirjutada joonisele (v?i v?ljastada k?suaknasse) nende punktide koordinaadid.Leida iga funktsiooni keskmine v??rtus antud l?igul.Pythoni funktsioonid (meetodid) moodulis turtle.py Objekti (turtle) seadedLiikumineforward() | fd()# liigu edasi backward() | bk() | back()# liigu tagasiright() | rt()# p??ra paremaleleft() | lt()# p??ra vasakulegoto() | setpos()# mine(x,y)setx(), sety()# m??ra x, m??ra ysetheading() | seth()# m??ra nurkhome()# mine(0, 0), nurk 0circle()# ring(raadius, kaar=360, hnurk)dot()# punkt (diameeter, v?rv)stamp()# j?lg, v?ljastab id. numbriclearstamp()# kustutab nimetatud j?ljeclearstamps()# kustutab j?lgi …undo()# eelmise tegevuse tühistaminespeed()# animatsiooni kiirus 1..10 v?i 0Objekti infoposition() | pos()# asukohttowards()# suund (etteantud punkti poole)xcor(), ycor()# x-asukoht, y-asukohtheading()# nurkdistance()# kaugus punktist v?i teisest obj.stNurgaühikuddegrees()# nurga ühiku m??ramine, t?isring 360radians()# nurga ühiku m??ramine - t?isring 2*math.pi radPliiatsi seadedpendown() | pd() | down()# pliiats allapenup() | pu() | up()# pliiats ülespensize() | width()# pliiatsi suuruspen()# pliiatsi omadusedisdown()# kas pliiats allcolor()# v?rv (joon, taust)pencolor()# joone v?rvfillcolor()# tausta v?rvfilling()# kas toimub kujundi t?itminebegin_fill()# t?itmine algabend_fill()# t?itmine l?ppebreset()# joonise kustutamine, algseadedclear()# joonise kustutaminewrite()# objekt kirjutab tekstiKuvandi seadedshowturtle() | st()# n?ita objhideturtle() | ht()# peida objisvisible()# kas obj on n?htavshape()# obj kuvand (m??ramine v?i nimi)shapesize() | turtlesize()#objsuurus(laius,k?rgus,joon)settiltangle()# obj p??rdenurk (mitte suund)tiltangle()# obj p??rdenurk (suund ei muutu)tilt()# obj p??rdenurga muutus (suund ei muutu)Objektiga (turtle) seotud sündmuste kasutamineonclick(fun, klahv=1) # hiirekl?ps objektil k?ivitab fn.i fun koordinaatidega x, y; klahv on hiire klahvi nronrelease()ondrag()Veel turtle meetodeidbegin_poly()# kompleksjoone alustamineend_poly()# kompleksjoone l?petamineget_poly()# viit viimati loodud kompleksjooneleclone()# objekti (kilpkonna) teisiku loominegetturtle()# viit esmasele (anonüümsele) objektilesetundobuffer()# tegevuste pinu suurusundobufferentries()# tegevused pinusGraafikaakna seadedbgcolor()# taustav?rvbgpic(fail)# taustapilt (gif-fail)clearscreen()# kogu joonise kustutamineresetscreen()# kogu joonise kustutamine ja algseaded obj.delescreensize()# ekraani suurus (laius, k?rgus [, taust])setworldcoordinates() # koordinaadid (x1,y1, x2, y2)Animatsiooni seadeddelay()# viivitus (millisekundites)tracer()# animatsioon sisse/v?lja v?i kiirem/aeglasemupdate()# tehtud joonise/muudatuste n?itamine ekraanilAknaga seotud sündmuste kasutaminelisten()onkey() | onkeyrelease()onkeypress()onclick() | onscreenclick()ontimer()mainloop() | done() Eriseaded ja -meetodidmode()# esitusviis (“standard“, “logo“, “world“)colormode()# v?rvi (RGB) esitusviis 1.0 v?i 255getshapes()# kuvandite loendregister_shape() # uue kuvandi registreerimineturtles()# k?igi kilpkonnade hulkwindow_height()# akna k?rguswindow_width()# akna laiusVeel aknaga seotud meetodeidbye()# graafikaakna sulgemineexitonclick()# akna sulgemine hiirekl?psugasetup()# akna suurus (laius, k?rgus) ja asukoht (x, y)title()# tekst akna p?isesV??rtuste sisestamine (input)textinput()# v??rtuse lugemine (p?is, tekst), tulemi tüüp strnuminput()# v??rtuse lugemine (p?is, tekst), tulemi tüüp float ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches