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

Zadaci za wannabe pythoniste

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

Strane: << < .. 7 8 9 10 11 12 13 14 15 16 ... Dalje > >>

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste23.01.2020. u 06:08 - pre 51 meseci
Evo, noćas mi se javilo i kako doraditi program da prevodi u oba smera :)

Prepravio rešenje od juče i postavio
na isto mesto
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste23.01.2020. u 06:56 - pre 51 meseci
Code (python):
print(' '.join({v:k for k, v in morse.items()}.get(l) for l in ".... . .-.. .-.. --- .-- --- .-. .-.. -..".split(' ')))
H E L L O W O R L D

print(' '.join(morse.get(l, ' ') for l in "HELLO WORLD"))
.... . .-.. .-.. ---   .-- --- .-. .-.. -..
 


Malo potpuniji rečnik:

Code (python):
{'A': '.-',
 'B': '-...',
 'C': '-.-.',
 'Č': '-..-',
 'Ć': '--.-',
 'D': '-..',
 'DŽ': '-.--',
 'Đ': '..-..',
 'E': '.',
 'F': '..-.',
 'G': '--.',
 'H': '....',
 'I': '..',
 'J': '.---',
 'K': '-.-',
 'L': '.-..',
 'M': '--',
 'N': '-.',
 'O': '---',
 'P': '.--.',
 'Q': '--.-',
 'R': '.-.',
 'S': '...',
 'Š': '----',
 'T': '-',
 'U': '..-',
 'V': '...-',
 'W': '.--',
 'X': '-..-',
 'Y': '-.--',
 'Z': '--..',
 'Ž': '.--',
 '1': '.----',
 '2': '..---',
 '3': '...--',
 '4': '....-',
 '5': '.....',
 '6': '-....',
 '7': '--...',
 '8': '---..',
 '9': '----.',
 '0': '-----',
 '.': '.-.-.-',
 ',': '--..--',
 ':': '---...',
 ';': '-.-.-.',
 '?': '..--..',
 '!': '-.-.--',
 '-': '-....-',
 '/': '-..-.',
 '()': '..-.'}
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste23.01.2020. u 07:13 - pre 51 meseci
Odlično, Panto, apdejtovao sam kod!
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 802



+634 Profil

icon Re: Zadaci za wannabe pythoniste24.01.2020. u 14:11 - pre 51 meseci
Hmmm ... i dalje ne kapiras kako radi Python dict:
Code:
for i in poruka2:
    for key, value in morse.items(): 
       if i == key: 
            print(value, ' ', end='')

Cemu ovo? morse[key] ti daje direktnu vrednost 'value', prema tome dovoljno je reci:
Code:
for i in poruka2:
    if (i in morse):
        print(morse[i], ' ', end='')

Nesto tezi slucaj je ovaj inverzni, kada sa Morzeovog koda prevodis u alfabet. Tu vec ima smisla ova "for key, value ..." petlja, mada moze i elegantnije: tako sto ces uvesti poseban dict gde su kljucevi Morzeovi kodovi, a vrednosti slova alfabeta. Ali svakako da ne moras da rucno pravis taj drugi dict - njega pravis na pocetku programa na osnovu 'morse':
Code:
alphabet = {}
for key, value in morse:
    alphabet[value] = key

ili skraceno:
Code:
alphabet = dict((v, k) for k, v in morse.iteritems())

Time se program uproscava:
Code:

for i in poruka1:
    if (i in alphabet):
        print(alphabet[i], ' ', end='')
for i in poruka2:
    if (i in morse):
        print(morse[i], ' ', end='')



 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste24.01.2020. u 15:05 - pre 51 meseci
To rešenje za poruka2 sam samo prepisao od poruka1 i zamenio šta je trebalo zameniti :)
I pošto radi, ništa više ne pipam!
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste24.01.2020. u 15:13 - pre 51 meseci
E a sada da mi krenemo na zadatak broj 16.

Ovoga puta je vrlo kratak, treba zadati broj ispisati slovima.

Unesi pozitivan broj od 1 do 1000: 529
petsto dvadeset devet


Svoje rešenje sam sačuvao ovde.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste25.01.2020. u 07:49 - pre 51 meseci
Evo jedan, što bi pravi programeri rekli, trivijalan zadatak i to broj 17

Napravi program koji će prebrojati i potom ispisati sva unikatna slova i znakove u zadatom tekstu.

Svoje rešenje sam sačuvao ovde.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste25.01.2020. u 11:45 - pre 51 meseci
Imaš jedno if viška, zameni ga sa and.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste25.01.2020. u 13:50 - pre 51 meseci
bilo je sa and, al ne radi kako treba
pa sam zato stavio u drugi red.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste25.01.2020. u 17:52 - pre 51 meseci
Zadatak broj 18

Treba napraviti računaljku za onu igru Scrabble, gde slažeš kockice sa slovima, kao u ukrštenim rečima,
Svako slovo nosi određeni broj bodova, tako da kad sastaviš reč, dobijaš zbir tih bodova.

Nije neki problem, sve dok nisam došao do sabiranja naših slova od dva znaka: LJ, NJ, DŽ
jer ih petlja razloži, pa računa svako slovo posebno.

Dakle, stigao sam dovde:

Code:
bodovi = {'A' : 1, 'E' : 1, 'I' : 1, 'L' : 3, 'N' : 2, 'O' : 1,
          'R' : 2, 'S' : 2, 'T' : 2, 'U' : 1, 'D' : 2, 'G' : 2,
          'B' : 3, 'C' : 5, 'M' : 3, 'P' : 3, 'F' : 4, 'H' : 4,
          'V' : 3, 'K' : 3, 'J' : 3, 'DŽ' : 10, 'LJ' : 10, 'NJ' : 10,
          'Č' : 8, 'Ć' : 8, 'Š' : 5, 'Ž' : 8, 'Đ' : 10, 'Z' : 5}

rec = 'DANAS'

zbir = 0

for i in rec:
    zbir += bodovi[i]

print('Zbir za ovu reč je:', zbir)


Ali kako obračunati kad je reč recimo 'LJUDI'?

Trebalo bi valjda sa nekim find prvo ustanoviti ima li ta tri slova u zadatoj reči i ako ima za svako dodati 10 bodova. Onda izbaciti iz reči to slovo i obračunati za ostala kao što je gore dato.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste26.01.2020. u 06:18 - pre 51 meseci
Recimo, jednostavno da kreiraš promenljivu npr. t i da bude t=i svaki put osim kada je t+i u recniku.

"bilo je sa and, al ne radi kako treba"

if i not in slova and i != ' '
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste26.01.2020. u 06:59 - pre 51 meseci
Kako je 'LJ' slovo od dva znaka, jednostavno tako treba i uneti.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste26.01.2020. u 07:05 - pre 51 meseci
Da, i onda ga računa
L = 3
J = 3
dakle ukupno 6,
a LJ je u stvari 10 bodova!?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste27.01.2020. u 18:38 - pre 51 meseci
Inženjeru koji ima samo čekić, svaki problem izgleda kao ekser.
Nemoj samo šablonski da razmišljaš...

Code:
bodovi = {'A' : 1, 'E' : 1, 'I' : 1, 'L' : 3, 'N' : 2, 'O' : 1,
          'R' : 2, 'S' : 2, 'T' : 2, 'U' : 1, 'D' : 2, 'G' : 2,
          'B' : 3, 'C' : 5, 'M' : 3, 'P' : 3, 'F' : 4, 'H' : 4,
          'V' : 3, 'K' : 3, 'J' : 3, 'DŽ' : 10, 'LJ' : 10, 'NJ' : 10,
          'Č' : 8, 'Ć' : 8, 'Š' : 5, 'Ž' : 8, 'Đ' : 10, 'Z' : 5}

rec = 'LJUDI'

zbir = 0
i = 0

while i<len(rec):
    spec = rec[i:i+2]
    if spec == 'LJ' or spec == 'NJ' or spec == 'DŽ':
       zbir+=10
       i+=2
    else:
       zbir += bodovi[rec[i]]
       i+=1

print('Zbir za ovu reč je:', zbir)


Inače, programi za parsiranje regularnih izraza koriste "look ahead" odnosno "look behind" tehnike za uparivanje. Ovo je jedna implementacija look ahead tehnike. Nije dovoljno sam na osnovu tekućeg slova da se odredi vrednost, nego je, ponekad, potrebno i sledeće slovo...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste27.01.2020. u 18:51 - pre 51 meseci
Drugim rečima, ako ti trebaju dva slova, ima da uzmeš dva slova...

 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste27.01.2020. u 20:13 - pre 51 meseci
Naveo sam gore primer za pomenuti problem, a evo i da ga implementiram, na primer:

Code (python):
rec = 'LJUDI'
zbir = 0
t = ''

for i in rec:
    if t != '' and bodovi.get(t+i):
        zbir += bodovi[t+i]
        zbir-=bodovi[t]
    else:
        zbir += bodovi[i]
        t=i        

print('Zbir za ovu reč je:', zbir)
Zbir za ovu reč je: 14


Radi i kada nije vrednost za sva tri slova 10.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste27.01.2020. u 20:28 - pre 51 meseci
Uradi si praktično isto što i ja, možda malo elegantnije.
Moja ideja je samo bila da pokažem da nije hash lista jedini alat (čekić) u torbi sa alatom, nego da može i na drugačiji način da se radi.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste28.01.2020. u 03:17 - pre 51 meseci
E super ste obojica, hvala na rešenju!

Ali:
Đokino rešenje mi je sasvim jasno,
a tvoje Panto uopšte ne kapiram šta radi taj t = ''
Kako on dobije vrednost drugačiju od praznog niza?

Daj neki komentar, ne škrtari :)
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste28.01.2020. u 07:51 - pre 51 meseci
Prilično jednostavno. Osnovno, ukoliko uslov (if) nije ispunjen tj. ako t+i nije u rečniku, izvršava se else, tj. t=i, zatim, pri narednom prolasku petlje (for), t je L a i je J, kako je 'L' + 'J' u rečniku, izvršava se if, itd.

Možeš ovde da vidiš kako se navedeno izvršava, unesi kod i klikni na Visualize Execution dugme, zatim postepeno klikni na Next dugme.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste28.01.2020. u 12:22 - pre 51 meseci
Sad sam uklavirio. Kad sam video da oduzimaš t u slučaju da je [t+i]. Toga se ne bih nikad setio.
Lepo sam ja rekao još onomad, Panta mađioničar :)

E pa dobro, ovo je bilo korisno, jer sam naučio novu stvar koju je Đoka pomenuo: look ahead.
Moram to malo pogledati na netu. Nego mi pada na pamet da smo tom tehnikom mogli izbrojati one nizove jedinica i nula kad smo računali pismo i glava.

00011100001111010100111100
 
Odgovor na temu

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

Strane: << < .. 7 8 9 10 11 12 13 14 15 16 ... Dalje > >>

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

Postavi temu Odgovori

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