Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadaci za wannabe pythoniste

[es] :: Python :: Zadaci za wannabe pythoniste

Strane: << < .. 3 4 5 6 7 8 9 10 11 12 ... Dalje > >>

[ Pregleda: 50996 | Odgovora: 629 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste31.12.2019. u 08:34 - pre 51 meseci
Ene de nisam se udubio u resenje ;)
Imam ja nesto komplikovaniju stvar koju sam koristtio za resavanja ojlera 512, al ajde :P
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste08.01.2020. u 17:56 - pre 51 meseci
Stiže i Zadatak 12: Pretraga rečnika

Napravi funkciju i nazovi je pretragaRecnika. Ona će potom imati rečnik i vrednost za pretragu kao svoje jedine parametre.

Napravi i glavni program koji pokazuje da pretragaRecnika funkcioniše kao deo rešenja za ovu vežbu. Tvoj program treba da kreira rečnik i onda da pokaže da funcija ispravno radi kada za rezultat ima više ključeva, jedan ili nijedan ključ.

Eto. Kratko i valjda je jasno.
 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Zadaci za wannabe pythoniste08.01.2020. u 20:15 - pre 51 meseci
Kupio sam na Udemy za oko 9$ neki kurs za ucenje pajtona u obliku zadataka. Svideo mi se ali sam prosao samo 30% jer sam posle otisao na neku drugu stranu.
Ovaj kurs
https://www.udemy.com/course/python-video-workbook/

Pored toga sam na tel instalirao i SoloLearn pa u kojekakvim redovima dok sam cekao zabavljao sam se s tim.

Evo i nestp gde kao kodiras igricu i tako ucis
https://www.codingame.com/start

[Ovu poruku je menjao CoyoteKG dana 08.01.2020. u 21:35 GMT+1]
 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Zadaci za wannabe pythoniste08.01.2020. u 21:21 - pre 51 meseci
^ greska
Promasio temu. Molim moderatora da obrise.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste09.01.2020. u 04:41 - pre 51 meseci
"Eto. Kratko i valjda je jasno. "

Nije jasno, recnik nije definisan.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste09.01.2020. u 10:31 - pre 51 meseci
Ako nije definisan, verovatno je zadavač mislio da ga sami definišemo.
Ali evo ovde imaš jedan za nuždu.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
82.117.201.26



+1064 Profil

icon Re: Zadaci za wannabe pythoniste09.01.2020. u 16:10 - pre 51 meseci
znaci mapiranje 1-1? To je onda lako. Da li piton ima map-u, asocijativni niz ili dictionary data strukturu?
Ako ima onda eje ovo trivijalno.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste09.01.2020. u 17:09 - pre 51 meseci
Ima dictionary, naravno.



 
Odgovor na temu

anon70939

Član broj: 70939
Poruke: 2823



+6883 Profil

icon Re: Zadaci za wannabe pythoniste09.01.2020. u 18:03 - pre 51 meseci
pa kako drugacije da se pretrazuje recnik osm sa "dictionary"
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste10.01.2020. u 15:32 - pre 51 meseci
Pa može... list po list
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste10.01.2020. u 16:22 - pre 51 meseci
Evo i rešenja za zadatak broj 12.

Ovo sa rečnikom mi se baš dopada. Mogao bi i pravi rečnik da se napravi sa ovom funkcijom.
Jel može neko da kaže, koji se program uz python koristi za pravljenje interfejsa?
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 794



+630 Profil

icon Re: Zadaci za wannabe pythoniste10.01.2020. u 19:50 - pre 51 meseci
Da li je ovo tvoje resenje ili je to prepisano iz knjige? Zadatak je postavljen prilicno nejasno. Da li se trazi englesko-srpski recnik ili obrnuto? Recnik koji si postavio online podrazumeva da su reci s leve strane srpske, s desne engleske, a onda autor resenja pravi recnik (odnosno 'dict' strukturu) u kome su stvari postavljene obrnuto - kljucevi su engleske reci, a vrednosti srpske. Da bi na kraju program za zadate srpske reci vracao engleske ... prilicno konfuzno, ako mene pitas.

Ako ti vec treba srpsko-engleski recnik, zar nije prirodnije definisati dict u stilu:
srEn = { 'a' : 'but, and', 'abonos' : 'ebony', 'avaj' : 'oh', 'avgust' : 'August', 'avet' : 'ghost, phantom', 'avetinja' : 'ghost, phantom', 'avlija' : 'court, court-yard' ... }

u kom slucaju funkcija pretraga postaje krajnje jednostavna:
def pretraga (data, key):
if (key in data):
return data[key]
else:
return ''

Ova funkcija gore podrazumeva da je recnik konstruisan u strogom 1:1 maniru. Medjutim, ovaj tvoj nije. Ima slucajeva kada se iste engleske reci mapiraju u vise srpskih reci i obrnuto:
'agent' : 'agent'
'agent' : 'commercial-traveller'
'bakarna' : 'copper'
'bakarno' : 'copper'

Ta cinjenica ti delimicno pravi program neupotrebljivim, jer ako definises recnik od te 4 odrednice dobices (mozes da testiras u python shellu):
$ python
>>> srEn = { 'agent' : 'agent', 'agent' : 'commercial-traveller', 'bakarna' : 'copper', 'bakarno' : 'copper' }
>>> srEn
{'bakarna': 'copper', 'bakarno': 'copper', 'agent': 'commercial-traveller'}

Kao sto vidis, druga definicija reci 'agent' je zamenila ovu prvu.

Tu dolazimo do problema ucitavanja recnika. Python dict od nekih 20-30 key:value parova, ako se ne menjaju tokom vremena, mozes da 'hard-kodujes' u samom programu, kao sto si to i uradio. Medjutim, ako dict sadrzi nekih 10000 key:value parova sigurno je bolje ucitati to iz nekog fajla, sto je u pythonu trivijalno:
srEn = {}
for line in open('recnik.txt', 'r'):
key, value = line.strip().split(':')
srEn[key] = value

Ovo ti je osnovni kod koji ilustruje princip. Metod split(delimiter) razdvaja string u niz (listu) stringova koristeci znak 'delimiter' kao razdvajac - npr.
string='The;Big;Brown;Fox'
words = string.split(';')

vraca niz 'words' koji ce u sebi imati 4 elementa: [ 'The', 'Big', 'Brown', 'Fox' ].

Ali to je sve daleko od resenja, jer recnik koji si postavio sadrzi nekoliko zackoljica koje moras da razresis.

Prvi problem je ovo sto je vec opisano gore. Najjednostavniji nacin je da prevode razmaknes znakom ';', kao sto se to radi u pravim recnicima. Kod onda postaje:
srEn = {}
for line in open('recnik.txt', 'r'):
key, value = line.strip().split(':')
if (key not in srEn):
srEn[key] = value
else:
srEn[key] += '; ' + value

Drugi nacin, koji lici na ovo tvoje resenje, je da ti prevodi uvek budu nizovi, odnosno liste, pa da dobijes recnik tipa:
srEn = { 'agent' : [ 'agent', 'commercial-traveller'], 'bakarna' : ['copper'], 'bakarno' : ['copper'] }

Takvu strukturu mozes da napunis iz fajla na sledeci nacin:
srEn = {}
for line in open('recnik.txt', 'r'):
key, value = line.strip().split(':')
if (key not in srEn)
srEn[key] = [ value ]
else:
srEn[key].append(value)

Verovatno primecujes da sam na pocetku u oba slucaja stavio:
srEn = {}

Mada Python ne zahteva da promenljive deklarises kao u C/C++ na primer, svaka promenljiva koju koristis mora da bude definisana pre prvog koriscenja:
b = a + 1

ce vratiti gresku ako 'a' nigde nije definisano. Ispravno je:
a = 0 # ili neka druga vrednost
b = a + 1

Slicno je i sa listama i recnicima - njih takodje moras da inicijalizujes pre koriscenja:
recnik = {}
lista = []
recnik['nova rec'] = 'nesto novo'
lista.append('novi clan')


Drugi problem je sto ces, ako napravis fajl identican ovom zadatom recniku, u kome su reci s leve i s desne strane oivicene navodnicima, prilikom citanja fajla parametri 'key' i 'value' ce dobiti dvostruke navodnike i jos poneki razmak izmedju:
>>> line="'bakarno' : 'copper'"
>>> line.split(':')
["'bakarno' ", " 'copper'"]

A to nije ono sto si hteo. Znaci, prilikom ucitavanja recnika moraces da skines navodnike (odnosno apostrofe), kao i da se resis razmaka. Za brisanje razmaka s leve i desne strane stringa (a.k.a. "trimovanje") koristis funkciju (odnosno metod) strip():
key, value = line.split(':')
key = key.strip()
value = value.strip()

Ostaje jos da skines navodnike na pocetku i kraju izraza, sto je najelegantnije da uradis ovako:
key = key[1:-1]  # Izdvaja rec od drugog do pretposlenjeg znaka
value = value[1:-1]

A sada - tutti ... odnosno sve to spojeno u jedno:
srEn = {}
for line in open('recnik.txt', 'r'):
key = line.split(':')[0].strip()[1:-1]
value = line.split(':')[1].strip()[1:-1]
if (key not in srEn)
srEn[key] = [ value ]
else:
srEn[key].append(value)

Potom, neke linije u tvom recniku sadrze samo znak '$'. Njih bi najbolje bilo da preskocis, odnosno da preskocis sve linije koje ne sadrze dvotacku kao separator:
for line in open('recnik.txt', 'r'):
if (':' not in line):
continue
key = ...

Ovde bih stao za sada. Mada, pricu mozemo da sirimo i dalje. Sta raditi kada ti taj fajl s recnikom od 10000 elemenata ukucava neko ko bas nije mnogo pedantan, pa dobijes:
'"agent' : 'agent"
' agent : commercial-traveller'
bakarna :copper
'bakarno' : 'copper'

Ali to je vec zadatak za lekciju o regularnim izrazima u Pythonu.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste10.01.2020. u 22:49 - pre 51 meseci
Beri je ovo jako lepo objasnio.

Moram da ti ukažem na jednu tvoju veliku grešku u ratmišljanju:
Citat:
Ovo sa rečnikom mi se baš dopada. Mogao bi i pravi rečnik da se napravi sa ovom funkcijom.


Ti si trenutno u poziciji koja je opisana u literaturi o "situational leadership" (vidi, na primer https://www.atlassian.com/blog...hip-styles-for-every-situation) koja se naziva "enthusiastic beginner" ili D1.
Svi smo mi bili u tom položaju, bilo kada smo pokušavali da naučimo programiranje, ili skijanje, ili da vozimo kola, ili da sviramo gitaru (nastavi niz)...
Imaš jaku želju da naučiš programiranje, imaš motivaciju, ali vrlo malo iskustva i znanja. Ne znaš šta ne znaš. Ono što je problematično je to što ova pozicija (D1) zahteva vođstvo koje se zove S1 - tutorstvo.
Ljudima u ovoj poziciji jako je potrebno da imaju nekoga koji im TAČNO kaže šta dalje da rade.

I to je veliki problem sa svima koji hoće da nauče neku veštinu, a nemaju instruktora, nego idu sa nekim Internet "samoučenjem".
A problem je to što je sledeća faza u procesu napredavanja faza D2 koja se zove "disilusioned lerner". U toj fazi nastupa razočaranost, dolaziš do shvatanja koliko zapravo malo znaš i to je faza, u kojoj bez dobrog vođstva, napuštaš to što si počeo da radiš.

Sada si oduševljen python distionary strukturom podataka. A ne znaš, na primer, da je dictionary u pythonu realizovan kao hash tabela. Ne znaš šta je hash tabela. Ne znaš da pretraživanje hash tabele ima linernu kompleksnost i da se ta linearna kompleksnost obeležava kao O(n), Ne znaš ni šta je to O notacija. Ne znaš da efikasni algoritmi pretraživanja, kao na primer B-stablo imaju kompleksnost od O(log n). Ne znaš ni šta je to B-stablo, pa ni obično stablo.

I sada bi ti pravio grafičku aplikaciju za rečnik, koristeći neefikasnu strukturu podataka i bez najbliže predstave koliko to može da bude komplikovano.

Nemam nameeru da ti dam savet kako da napraviš takvu aplikaciju, jer bi to samo povećalo broj pitanja za koje ni ne znaš da postoje, niti znaš odgovore na njih.
Svi tvoji dosadašnji python programi imaju po desetak linija koda. Onda kada budeš u stanju da napišeš python program od 1000 linija koda (koji RADI), počni da razmišljaš o sebi kao o junior programeru.

Do tada, rešavaj ove fizz buzz probleme, a pokušaj i da nađeš nekog predavača ili da odeš na neki kurs python programiranja.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 01:47 - pre 51 meseci
Đoko, prijatelju, još jednom hvala na dobronamernim savetima.

Sve sam te razumeo i sve si u pravu. Imam želju, imam motivaciju i radim svaki dan pomalo, pa dokle stignem.
Nažalost, ovo što si na kraju savetovao, nije ostvarimo. U situaciji u kojoj sam, ne mogu da nađem ni (živog) predavača, niti da se upišem na kurs. Možda jednog dana. Zato pokušavam da nešto naučim koristeći ono što mi je na raspolaganju, a to su net i knjige. Ako hoćeš da se prihvatiš uloge onlajn instruktora, primljen si na posao odmah

Druga alatka mi je upravo to što si naveo, motivacija. A kako je održavam? Pa tako što pokušavam da nađem problem KOJI ME ZANIMA. I otuda ideja o rečniku, jer mi se to čini kao zanimljiv projekat. Već sam pisao, najviše me zapravo zanima rad sa tekstom, a ne kojekakvi matematički problemi.

Dakle, skočim u vodu i probam da plivam. Nailazim na probleme usput i rešavam kako u tom trenutku znam i umem, bez pritiska rokova ili toga da uopšte moram nešto da postignem. Niti ja pravim neki poizvod za nekoga, pa da mora biti savršeno, niti mi egzistencija od toga zavisi, već je to za sada za mene hobi. Dakle, baš kao skijanje koje si naveo. Spustim se niz BLAGU padinu, pa ako i padnem koji put, nije smak sveta. Ali to što usput naučim ne bih naučio ako ostanem na vrh staze i nastavim da proveravam vezove, nameštam kapu i rukavice ili skakućem okolo sa jednom skijom na nozi.

Sve u svemu, pokušavam da sebi pronađem izazov, koji će mi održavati motivaciju i vući dalje. Ako imaš bolji konkretan predlog, biće mi neobično drago da ga saslušam. I još jednom, zaista sam ti zahvalan na svakom savetu.

E da, juče čačkam po netu i naiđem na ovaj, meni zanimljiv problem, koji je zapravo zadatak broj 13:

Kako da sabiraš ili oduzimaš ovakve stringove?
'1plus2plus3plus4'
rezultat = 10

ili:
'1plus2plus3minus4'
rezultat = 2
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 06:53 - pre 51 meseci
Djoka:"Ne znaš da pretraživanje hash tabele ima linernu kompleksnost"

Djoko, mislim da si umoran ;)
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 07:50 - pre 51 meseci
Citat:
a1234567:
Ako nije definisan, verovatno je zadavač mislio da ga sami definišemo.
Ali evo ovde imaš jedan za nuždu.

Nije ti dobro definisan taj rečnik, npr. imaš 'glava me boli, my head aches' kao i '$'.

Inače, Python dictionary ima get funkciju koja vraća vrednost ključa ako je ključ u rečniku ili porazumevanu None.
Code:
mydict = eval(open("recnik.txt").read())  # kreira recnik iz fajla "recnik.txt"

mydict.get('aps', 'Unknown')                                                                                                                                                          
'gaol, prison, lock-up'

mydict.get('abc', 'Unknown')                                                                                                                                                          
'Unknown'


Citat:
E da, juče čačkam po netu i naiđem na ovaj, meni zanimljiv problem, koji je zapravo zadatak broj 13:

Kako da sabiraš ili oduzimaš ovakve stringove?
'1plus2plus3plus4'
rezultat = 10

ili:
'1plus2plus3minus4'
rezultat = 2


Code:
eval('1plus2plus3plus4'.replace('plus', '+'))                                                                                                                                         
10

eval('1plus2plus3minus4'.replace('plus', '+').replace('minus', '-'))                                                                                                                  
2


https://docs.python.org/3/library/functions.html#eval

Prikačeni fajlovi
 
Odgovor na temu

Zurg

Član broj: 340713
Poruke: 58



+368 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 08:11 - pre 51 meseci
Izgleda da je Đoki pun heš i da zato ima veliki broj kolizija i nije baš O(k).
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 12:08 - pre 51 meseci
Citat:
Jel može neko da kaže, koji se program uz python koristi za pravljenje interfejsa?

Tkinter dolazi podrazumevano, a ima i dosta drugih npr. PyQT, WxPython, PySide, Kivy, PyGUI, itd.

https://wiki.python.org/moin/GuiProgramming

 
Odgovor na temu

Zurg

Član broj: 340713
Poruke: 58



+368 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 16:04 - pre 51 meseci
Program ili biblioteka? Ovo nabrojano su biblioteke i frejmvorci. Na primer QtCreator je program koji sadrži UI builder.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste11.01.2020. u 16:30 - pre 51 meseci
Citat:
B3R1:
Da li je ovo tvoje resenje ili je to prepisano iz knjige? Zadatak je postavljen prilicno nejasno. Da li se trazi englesko-srpski recnik ili obrnuto? Recnik koji si postavio online podrazumeva da su reci s leve strane srpske, s desne engleske, a onda autor resenja pravi recnik (odnosno 'dict' strukturu) u kome su stvari postavljene obrnuto - kljucevi su engleske reci, a vrednosti srpske. Da bi na kraju program za zadate srpske reci vracao engleske ... prilicno konfuzno, ako mene pitas.

Ako ti vec treba srpsko-engleski recnik, zar nije prirodnije definisati dict u stilu:
srEn = { 'a' : 'but, and', 'abonos' : 'ebony', 'avaj' : 'oh', 'avgust' : 'August', 'avet' : 'ghost, phantom', 'avetinja' : 'ghost, phantom', 'avlija' : 'court, court-yard' ... }

u kom slucaju funkcija pretraga postaje krajnje jednostavna:
def pretraga (data, key):
if (key in data):
return data[key]
else:
return ''

Ova funkcija gore podrazumeva da je recnik konstruisan u strogom 1:1 maniru. Medjutim, ovaj tvoj nije. Ima slucajeva kada se iste engleske reci mapiraju u vise srpskih reci i obrnuto...

Ako je rešenje za prethodni zadatak konfuzno, to je zaštitni znak da je moje

Svaka čast, Berislave, baš si se potrudio da mi objasniš i veliko hvala.

Kao prvo, meni je u glavi pre englesko-srpski, nego srpsko-engleski rečnik. Mada kad napraviš jedan, nije pretpostavljam nepremostiv problem napraviti i obrnuto.
Dosta si napisao i treba mi vremena da to u glavi raspetljam. Ono što sam shvatio je da nije dobar ovaj sistem 1:1 sa više reči u keys

'gaol, prison, lock-up' : 'aps'

jer vidim da ako u polje za pretragu ukucam samo 'court' neće pronaći prevod u rečniku. Stvari dodatno komplikuje ako ima više reči i u keys i u values. Npr.:

'gaol, prison, lock-up' : 'aps, zatvor'

Da li onda da svako značenje izdvojim u poseban par?
gaol : aps, gaol : zatvor, prison : aps, prison : zatvor, gaol : aps, gaol : zatvor

ali onda gubim neke odrednice, kao što si ti pokazao u primeru.

$ python
>>> srEn = { 'agent' : 'agent', 'agent' : 'commercial-traveller', 'bakarna' : 'copper', 'bakarno' : 'copper' }
>>> srEn
{'bakarna': 'copper', 'bakarno': 'copper', 'agent': 'commercial-traveller'}

Kao sto vidis, druga definicija reci 'agent' je zamenila ovu prvu.


Kako izbeći da se jedna definicija ne izgubi?

Naravno, ovaj deo o učitavanju rečnika iz fajla nije problem. Svakako da definicije neće biti deo programa, već u eksternom fajlu, jer će ih biti na hiljade.




 
Odgovor na temu

[es] :: Python :: Zadaci za wannabe pythoniste

Strane: << < .. 3 4 5 6 7 8 9 10 11 12 ... Dalje > >>

[ Pregleda: 50996 | Odgovora: 629 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.