Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 629 odgovora
  • 108.461 pregleda

Najnovija ↓

Re: Zadaci za wannabe pythoniste 23.01.2020. u 07:56 · pre 82 meseca #222
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': '-----',
 '.': '.-.-.-',
 ',': '--..--',
 ':': '---...',
 ';': '-.-.-.',
 '?': '..--..',
 '!': '-.-.--',
 '-': '-....-',
 '/': '-..-.',
 '()': '..-.'}
Re: Zadaci za wannabe pythoniste 24.01.2020. u 15:11 · pre 82 meseca #224
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='')



Re: Zadaci za wannabe pythoniste 24.01.2020. u 16:05 · pre 82 meseca #225
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!
Re: Zadaci za wannabe pythoniste 24.01.2020. u 16:13 · pre 82 meseca #226
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.
Re: Zadaci za wannabe pythoniste 25.01.2020. u 08:49 · pre 82 meseca #227
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.
Re: Zadaci za wannabe pythoniste 25.01.2020. u 18:52 · pre 82 meseca #230
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.
Re: Zadaci za wannabe pythoniste 26.01.2020. u 07:18 · pre 82 meseca #231
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 != ' '
Re: Zadaci za wannabe pythoniste 27.01.2020. u 19:38 · pre 82 meseca #234
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...
Re: Zadaci za wannabe pythoniste 27.01.2020. u 21:13 · pre 82 meseca #236
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.
Sviđa mi se1
Re: Zadaci za wannabe pythoniste 27.01.2020. u 21:28 · pre 82 meseca #237
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.
Re: Zadaci za wannabe pythoniste 28.01.2020. u 04:17 · pre 82 meseca #238
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 :)
Re: Zadaci za wannabe pythoniste 28.01.2020. u 08:51 · pre 82 meseca #239
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.
Re: Zadaci za wannabe pythoniste 28.01.2020. u 13:22 · pre 82 meseca #240
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
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme