{"id":63,"date":"2010-10-21T15:40:10","date_gmt":"2010-10-21T12:40:10","guid":{"rendered":"http:\/\/python.pingviinitiivul.ee\/?p=63"},"modified":"2010-10-21T16:51:34","modified_gmt":"2010-10-21T13:51:34","slug":"kuues-tund","status":"publish","type":"post","link":"https:\/\/python.pingviinitiivul.ee\/?p=63","title":{"rendered":"Kuues tund"},"content":{"rendered":"<p>N\u00e4ide nimede faili kirjutamisest koos paari v\u00e4ikse lisaga, et t\u00e4pit\u00e4hed ka toimiks ja oleks nimed uuel real k\u00f5ik:<\/p>\n<p><code># failinimi - lihtsalt nimi<br \/>\nfailinimi = \"test.txt\"<br \/>\n# suvaline muutuja - null t\u00e4histab t\u00f5de, k\u00f5ik muud numbrid valet.<br \/>\nvalmis = 0<br \/>\nnimenimekiri = []     # t\u00e4iesti t\u00fchi nimekiri<\/p>\n<p># kui eemalda j\u00e4rgnevas 'not' ja muuda \"valmis\" nullist erinevaks<br \/>\n# numbriks, siis t\u00f6\u00f6taks n\u00e4ide ka<br \/>\nwhile not valmis:<br \/>\n&nbsp;&nbsp;&nbsp;    nimi = raw_input(\"Lisa nimi:\")<br \/>\n&nbsp;&nbsp;&nbsp;    if nimi != \"\":<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        nimenimekiri.append(nimi)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        print \"Su nimes on \"+str(len(nimi))+\" t\u00e4hte\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;    else :<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        break    # murrab while ts\u00fckli j\u00f5uga katki<\/p>\n<p># Avame faili lisamise (\"a\" - append) re\u017eiimis,<br \/>\n# v\u00f5iks olla ka w - \"write\" \u00fclekirjutamisre\u017eiimiks<br \/>\nfail = open(failinimi,\"a\")<\/p>\n<p># kirjutame \u00fckshaaval nimed faili:<br \/>\nfor nimi in nimenimekiri:<br \/>\n&nbsp;&nbsp;&nbsp; # enne nime kirjutamist kodeerime selle UTF-8 kodeeringusse, et t\u00e4pit\u00e4hed ka s\u00e4iliks:<br \/>\n&nbsp;&nbsp;&nbsp;    fail.write(nimi.encode('utf-8')+\"\\n\")<br \/>\nfail.close()  # Fail tuleb alati sulgeda ka, et ta ikka kindlasti kirjutatud saaks<\/code> <\/p>\n<p>Samast failist nimede lugemine:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nsisu = []<br \/>\n# Kiire faili sisu lugemine<br \/>\nfor joon in open(\"test.txt\", \"r\"):<br \/>\n&nbsp;&nbsp;&nbsp;    sisu.append(joon)<\/p>\n<p>for nimi in sisu:<br \/>\n&nbsp;&nbsp;&nbsp;    print nimi <\/code><\/p>\n<p>Sellest n\u00e4itest ka muudetud versioon, kus kasutatakse alammeetodit salvestamiseks: <a href=\"https:\/\/docs.google.com\/document\/d\/1zf-0X30DTH1I1lpujq99GHRUkJ8xYap_XCzzdqKVWyA\">link<\/a><\/p>\n<p>P\u00f5hjalikum failide n\u00e4ide, mis kasutab juba keele j\u00e4rgmise taseme t\u00f6\u00f6riistu:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<\/p>\n<p>import os.path # Keerulisemateks operatsioonideks tuleb kaasata<br \/>\n# p\u00f5hjalikemaid lisasid keelevaramust<br \/>\n# os.path - v\u00f5ti failide leidmiseks ja orienteerumiseks kaustadesi<\/p>\n<p>nimi = raw_input(\"Faili nimi:\")<br \/>\nprint \"Kontrollime kas leiame faili:\"<br \/>\nos.path.exists(nimi)<br \/>\nif os.path.isfile(nimi)  :<br \/>\n&nbsp;&nbsp;&nbsp;    # Kui fail on olemas<br \/>\n&nbsp;&nbsp;&nbsp;    print \"Fail \", nimi, \" on olemas\"  # Kas test.txt on olemas?<br \/>\n&nbsp;&nbsp;&nbsp;    if os.path.isabs(nimi) : # Kas see on absoluutne tee failinimi? Nt \"\/home\/kasutaja\/test.txt\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        pikktee = nimi<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        lyhitee = os.path.basename(pikktee)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       # Get the type of shortpath:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        print \"Faili \",shortpath,\" t\u00fc\u00fcp on\", os.path.splitext(lyhitee)[1]<br \/>\n&nbsp;&nbsp;&nbsp;    print \"Faili \",nimi,\" suurus on\",  os.path.getsize(nimi),  \" baiti (m\u00e4rki)\"<br \/>\nelse : print \"Faili\", nimi ,\" pole\"<br \/>\nif os.path.isdir(nimi) :<br \/>\n&nbsp;&nbsp;&nbsp;    print \"See on kaust!\" # On see fail v\u00f5i kaust?<br \/>\n&nbsp;&nbsp;&nbsp;    def tagasitee( arg, kaustanimi, fnimed ):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        summa = 0<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        for fail in fnimed:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            if not os.path.isdir(fail) :<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                summa += os.path.getsize(fail)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        arg.append(summa)<br \/>\n&nbsp;&nbsp;&nbsp;    arglist = []<br \/>\n&nbsp;&nbsp;&nbsp;    # os.path.walk v\u00f5imaldab kaustasid l\u00e4bi k\u00e4ia<br \/>\n&nbsp;&nbsp;&nbsp;    # et muuta tervet failipuud:<br \/>\n&nbsp;&nbsp;&nbsp;    os.path.walk(nimi,tagasitee,arglist)<br \/>\n&nbsp;&nbsp;&nbsp;    summa = 0<br \/>\n&nbsp;&nbsp;&nbsp;    for vaartus in arglist:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        summa += vaartus<br \/>\n&nbsp;&nbsp;&nbsp;    print \"Kausta \", nimi ,\" suurus on:\" ,summa<br \/>\nelse : print \"See pole ka kaust!\"<\/code><\/p>\n<p>EKstreemseim n\u00e4ide t\u00e4naseks:<\/p>\n<p><code>#!\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<\/p>\n<p># Keskmine hinne ja \"MEIE\" hinded:<br \/>\nMEIE = {\"Karl\":0,\"Mati\":0,\"Raul\":0}<br \/>\nKESKMINE = 0<br \/>\nKOKKU = 0<br \/>\nFAILID = [\"hinded.txt\"]<\/p>\n<p>opilased = 0<\/p>\n<p># Loe andmed:<br \/>\nfor fail in FAILID:<br \/>\n&nbsp;&nbsp;&nbsp;     failis = open(fail,\"r\")<br \/>\n&nbsp;&nbsp;&nbsp;     while failis:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         joon = failis.readline()<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         for isik in MEIE:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             if joon.find(isik) >= 0 and len(joon.split()[0])==len(isik):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                  print joon.split()[1]<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;                 MEIE[isik] = float( joon.split()[1] )<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         s = joon.split()<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         n = len(s)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         if n == 0:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             break<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         try:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             KOKKU += float( s[ n-1 ] )<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         except:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;             pass<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         opilased += 1<br \/>\nprint MEIE<br \/>\nprint KOKKU<\/p>\n<p># Arvutame keskmise<br \/>\nprint KOKKU, opilased<br \/>\nKESKMINE = KOKKU \/ ( opilased * (1.0) )<\/p>\n<p># Eeldame, et keskmine hinne on C<br \/>\n# Kirjeldame hinnete vahemikud:<br \/>\nC = KESKMINE<br \/>\nCmaks = C + KESKMINE * .05<br \/>\nCmin = C - KESKMINE * .05<br \/>\nBmaks = Cmaks + KESKMINE * .1<br \/>\nBmin = Cmaks<br \/>\nAmin = Bmaks<br \/>\nDmaks = Cmin<br \/>\nDmin = Cmin - KESKMINE * .1<br \/>\nEmaks = Dmin<br \/>\n# Kuvame statistika:<br \/>\nprint \"Keskmine selle kodut\u00f6\u00f6 kohta:\", KESKMINE<br \/>\nprint \"A vahemik:\", \">=\"+str(Amin)<br \/>\nprint \"B vahemik:\", Bmaks,\"-\", Bmin<br \/>\nprint \"C vahemik:\", Cmaks,\"-\", Cmin<br \/>\nprint \"D vahemik:\", Dmaks,\"-\", Dmin<br \/>\nprint \"E vahemik:\", \"<\"+str(Emaks)\n\n# Iga MEIE hulka kuuluva kohta:\nfor isik in MEIE:\n&nbsp;&nbsp;&nbsp;     if MEIE[isik] >= Amin:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print isik,\"(\",MEIE[isik],\")\",\"sai ilmselt A \u00fclesande eest.\"<br \/>\n&nbsp;&nbsp;&nbsp;     elif Bmaks > MEIE[isik] >= Bmin:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print isik,\"(\",MEIE[isik],\")\",\"sai ilmselt B \u00fclesande eest.\"<br \/>\n&nbsp;&nbsp;&nbsp;     elif Cmaks > MEIE[isik] >= Cmin:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print isik,\"(\",MEIE[isik],\")\",\"sai ilmselt C \u00fclesande eest.\"<br \/>\n&nbsp;&nbsp;&nbsp;     elif Dmaks > MEIE[isik] >= Dmin:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print isik,\"(\",MEIE[isik],\")\",\"sai ilmselt D \u00fclesande eest.\"<br \/>\n&nbsp;&nbsp;&nbsp;     else:<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print isik,\"(\",MEIE[isik],\")\",\"sai ilmselt E \u00fclesande eest.\"<\/code><\/p>\n<p>Juurde on tarvis <a href=\"https:\/\/docs.google.com\/document\/pub?id=1ScpBBVfATww9Hf8poyZY9DGve7q-U7UJQ9yKGOo8on4\">seda faili<\/a>.<\/p>\n<p>Faili veakontroll (veakontroll.py):<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\n# veakontrolliga failioperatsioon<br \/>\nfnimi = raw_input(\"Faili nimi:\")<br \/>\ntry:<br \/>\n&nbsp;&nbsp;&nbsp;   fail = open(fnimi, \"rb\", 0)  # null l\u00f5pus t\u00e4histab puhvrit, siin siis puhvrit pole<br \/>\n&nbsp;&nbsp;&nbsp;   try:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        print fail.mode<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        print fail.name<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        fail.seek(-128, 2)  # siin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        andmed = fail.read(128)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        print andmed<br \/>\n&nbsp;&nbsp;&nbsp;   finally:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       fail.close()<br \/>\nexcept IOError:<br \/>\n&nbsp;&nbsp;&nbsp;    print \"Faili viga!\"<br \/>\n&nbsp;&nbsp;&nbsp;    pass <\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e4ide nimede faili kirjutamisest koos paari v\u00e4ikse lisaga, et t\u00e4pit\u00e4hed ka toimiks ja oleks nimed uuel real k\u00f5ik: # failinimi &#8211; lihtsalt nimi failinimi = &#8220;test.txt&#8221; # suvaline muutuja &#8211; null t\u00e4histab t\u00f5de, k\u00f5ik muud numbrid valet. valmis = 0 &hellip; <a href=\"https:\/\/python.pingviinitiivul.ee\/?p=63\">J\u00e4tka lugemist <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-63","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=63"}],"version-history":[{"count":19,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":77,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/63\/revisions\/77"}],"wp:attachment":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}