![]() |
![]() |
|
MnožiceBesedebesede, besede ... Kaj sploh je beseda? Osnovni delček komunikacije? Orožje? Zaporedje črk? Za nas bo beseda poljubno zaporedje znakov, torej niz! 1. podnalogaNapišite funkcijo vse_crke(beseda, crke), ki pove, ali množica crke vsebuje vse črke, ki se pojavijo v podani besedi. Pri tem sme množica vsebovati tudi črke, ki se v besedi ne pojavijo.
Uradna rešitevdef vse_crke(beseda, crke): '''Vrne True, če množica crke vsebuje vse črke, ki se pojavijo v nizu beseda in False sicer''' return not (set(beseda) - set(crke)) 2. podnalogaSestavite funkcijo
Uradna rešitevdef podobna(beseda, sez_besed): '''Vrne besedo iz sez_besed, ki ima največ skupnih črk z besedo `beseda`''' bs = set(beseda.lower()) # množica vseh črk besede beseda (različnih seveda ;-) ) naj_crk = 0 naj_beseda = None # nimamo še najboljše besede for ena_beseda in sez_besed: skupnih = len(bs.intersection(set(ena_beseda.lower()))) # velikost preseka množic - število skupnih znakov if skupnih > naj_crk: # smo našli boljšega kandidata? naj_crk = skupnih naj_beseda = ena_beseda return naj_beseda # če ne bo ustreznih besed, bomo ostali pri None 3. podnalogaNapišite funkcijo
Uradna rešitevdef naj_raznolika(besede): '''Vrne besedo in seznama besede, ki ima največ različnih znakov.''' naj_znakov = 0 for en_niz in besede: crk = len(set(en_niz.lower())) # število različnih znakov if crk >= naj_znakov: # boljši kandidat (= ker hočemo zadnjega!) naj_znakov = crk naj_niz = en_niz return naj_niz 4. podnalogaProgram
izpiše po abecedi urejenih 1000 najpogostejših angleških besed.
Napišite funkcijo Uradna rešitevdef naj_raznolika_ang_beseda(): '''Vrne tiste besede med pogostimi angl. besedami, ki imajo največ različnih znakov.''' import urllib.request naslov = "http://splasho.com/upgoer5/phpspellcheck" naslov += "/dictionaries/1000.dicin" vir = urllib.request.urlopen(naslov) naj_znakov = 0 for beseda in vir: en_niz = beseda.decode()[:-1] # odstranimo \n crk = len(set(en_niz.lower())) # število različnih znakov if crk == naj_znakov: # enakovredni kandidat naj_znakov = crk naj_nizi.append(en_niz) elif crk > naj_znakov: # boljši kandidat naj_znakov = crk naj_nizi = [en_niz] return naj_nizi # urejanje ni potrebno, ker so že besede urejene GimnazijaJanko ne mara matematike, je pa navdušen programer. In ker je v šoli dobil cel kup matematičnih nalog iz množic, jih bo rajši rešil tako, da bo napisal ustrezne programe v Pythonu. 1. podnalogaSestavite funkcijo Pri tem vemo, da velja Uradna rešitevdef vrni_tri(a, b): '''vrne nabor treh matematično opisanih množic''' A = set() for n in range(1, a): A.add(30*n) B = set() n = 1 while 5*n < b: B.add(n*n*n) n += 1 C = set() n = 1 while n*n*n < a*b: C.add(5*n) n += 1 return (A, B, C) 2. podnalogaSestavite funkcijo
Uradna rešitevdef racuni(A, B, C): '''Računamo z množicami ...''' X = A & B & C Y = A - (B | C) Z = (A - B) | C return (X, Y, Z) 3. podnalogaSestavite funkcijo
Uradna rešitevdef kartezicni(A, B): '''vrne nabor (X, Y), kjer X = A x B in Y = B x B''' X = set() for el1 in A: for el2 in B: X.add((el1, el2)) Y = set() for el1 in B: for el2 in B: Y.add((el1, el2)) return (X, Y) Mirko si želi dekle1. podnalogaMirko si ogleduje spisek vseh deklet, ki so mu všeč: Ker sta s Slavkom tudi po vojni ostala "nerazdvojna druga", Mirko ne želi hoditi z nobeno od Slavkovih bivših deklet. Slavko mu je poslal spisek svojih bivših. Pomagajte Mirku in sestavite funkcijo
prepočasna. Sestavi torej metodo, kjer ne boš uporabil zanke (ne while in ne for, seveda pa tudi ne rekurzije)
Uradna rešitevdef to_bo_moje_dekle(kandidatke, bivse): '''Vrne seznam možnih deklet za Mirka. Dejansko vrne seznam elementov tistih iz sezKand, ki niso v sezSlavko ''' mno_kandidatke = set(kandidatke) mno_bivse = set(bivse) katere = mno_kandidatke - mno_bivse # razlika množic return sorted(katere) # želimo urejen seznam Slovenske besede1. podnalogaNa http://bos.zrc-sazu.si/sbsj.html je 354.205 različnih besed iz gesel zbirke Besede slovenskega jezika. Program
poskuša iz te datoteke narediti seznam vseh besed. Ampak kot vidimo,
smo na začetku odrezali premalo. Prav tako se nismo znebili konca ...
Sestavite funkcijo
Uradna rešitevdef odst(niz): '''Iz niza odstrani <br>\r''' return niz[:-5] def vrni_besedo(n): '''Vrne n-to besedo. Rešitev predpostavlja, da se besede začno v 15. vrstici in nehajo 13 vrstic pred koncem. Taka struktura je bila konec l. 2015 ''' import urllib.request naslov = "http://bos.zrc-sazu.si/sbsj.html" vir = urllib.request.urlopen(naslov) vse = vir.read().decode() besede = vse.split('\n')[15:-13] slečene = list(map(odst, besede)) return slečene[n] 2. podnalogaSestavite funkcijo
Uradna rešitevdef odst(niz): '''Iz niza odstrani <br>\r''' return niz[:-5] def vrni_besede(): '''Vrne vse besede is SSKJ. Rešitev predpostavlja, da se besede začno v 15. vrstici in nehajo 13 vrstic pred koncem. Taka struktura je bila konec l. 2015 Namenoma ni uporabljano iskanje prve (a) oz. zadnje besede ('žžžžk') ''' import urllib.request naslov = "http://bos.zrc-sazu.si/sbsj.html" vir = urllib.request.urlopen(naslov) vse = vir.read().decode() besede = vse.split('\n')[15:-13] slečene = list(map(odst, besede)) return slečene def enake_crke(niz): '''Ali je niz sestavljen iz samih različnih črk''' return len(niz) == len(set(niz)) def same_razlicne(zacetek): '''Vrne množico tistih slovenskih besed, ki so sestavljene i z samih enakih črk in se začno z zač''' vse_besede = vrni_besede() mn_besed = set() for beseda in vse_besede: if beseda.startswith(zacetek) and enake_crke(beseda): mn_besed.add(beseda) return(mn_besed)Mesto objave ob koncu projekta 15.9.2018 |