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

Zadaci za wannabe pythoniste

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

Strane: << < .. 23 24 25 26 27 28 29 30 31 32

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste24.04.2020. u 11:46 - pre 47 meseci
Al si ga izanalizorao, svaka čast!
Mnogo mi pomaže ovo, da vidim logiku različitih rešenja.
Hvala!
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste24.04.2020. u 19:09 - pre 47 meseci
Code:
' '.join(word[::-1] for word in 'rečenica sa viškom       razmaka'.split(' ')) 

'acinečer as mokšiv       akamzar'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste25.04.2020. u 02:05 - pre 47 meseci
Panta zvani one-liner.
Nisam ništa duže ni očekivao

Lep dan vam svima želim!
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste25.04.2020. u 07:50 - pre 47 meseci
Evo gai Haskell:
Code:

rev words = concat $ splitSpace words
splitSpace words = splitSpace' words [] []
    where
    splitSpace' (' ':words) cumul list = cumul:[' ']: splitSpace' words [] list
    splitSpace' (c:words) cumul list = splitSpace' words (c:cumul) list
    splitSpace' [] cumul  list = cumul:list
main = do
    putStrLn $ rev "rečenica sa viškom       razmaka"

Ovo je nesto komplikovanije jer moraju da se sacuvaju razmaci inace
bi bilo samo ovo:
Code:

rev wrds = unwords $ map reverse $ words wrds
main = do
    putStrLn $ rev "rečenica sa viškom       razmaka"

 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste30.04.2020. u 17:01 - pre 47 meseci
Zadatak 35: Encryption Algorithm

Make a function that encrypts a given input with these steps:

Input: "apple"

Step 1: Reverse the input: "elppa"

Step 2: Replace all vowels using the following chart:

a => 0
e => 1
o => 2
u => 3

# "1lpp0"

Step 3: Add "aca" to the end of the word: "1lpp0aca"

Output: "1lpp0aca"

--------------------
Ja sam napravio nešto ovako
Code:
vokali = {'a': 0, 'e': 1, 'o': 2, 'i': 3, 'u': 4}
novo = ''


def encr(rec):
    obrnuto = rec[::-1]
    for i in obrnuto:
        if i in vokali:
            novo += obrnuto.replace(i, str(vokali[i]))
        novo += i
    novo += 'aca'

    return novo


encr('jabuka')


ali mi prijavljuje grešku:
UnboundLocalError: local variable 'novo' referenced before assignment
Nije mi jasno šta treba da popravim.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste30.04.2020. u 21:28 - pre 47 meseci
Fantastičan primer kako ne treba programirati.
Varijable vokali i novo su globalne, deklarisane su van tela funkcije. Koja je njihova svrha, ako se koriste samo u funkciji?

Možda si preskočio deo koji priča o "vidljivosti" (scope) varijabli. novo je globalna varijhabla. U telu funkcije koje se nalazi ispod deklaracije varijable, njena vrednost može da se pročita, ispiše, svašta može sa njom.

Jedena stvar ne može. NE MOŽE JOJ SE DODELITI VREDNOST.
Ako pokušaš da joj dodeliš vrednost (ako je staviš sa leve strane znaka =), u tom momentu napravi se LOKALNA varijabla sa istim imenom.

Dakle, u funkciji si pogao da napišeš print(novo), ali novo+= je potpuno nova neinicijalizovana lokalna varijabla.

Gomila jezika dozvoljava da se manipuliše globalnom varijablom. I to je ogroman izvor grešaka, takozvani side-effect.
Rezultat funkcije treba da zavisi od ulaznih varijabli, ali ne i od nečega što je deklarisano van funkcije.
Funkcija treba da vrati vrednost, ali ne treba da menja globalne varijable.

Zamisli šta bi se desilo, kada bi tvoj program radio, a ti pozvao DVA puta funkciju. novo bi imalo sadržaj od prethodnog poziva i dobio bi neočekivan rezukltat.

POMERI DEKLARACIJU VARIJABLE U TELO FUNKCIJE.

I, molim te, nemoj da me pitaš zašto ne valja to što si napisao, kao i zašto nije logično da tvoja funkcija radi...
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste01.05.2020. u 07:10 - pre 47 meseci
Posle još malo istraživanja, dođoh do rešenja :)

Code:
def encr(rec):
    vokali = {'a': 0, 'e': 1, 'o': 2, 'i': 3, 'u': 4}
    novo = ''

    for i in rec:
        if i in vokali:
            i = str(vokali[i])
            novo += i
        else:
            novo += i 
    print(novo)
    
encr('jabuke')


ispis
j0b4k1
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste01.05.2020. u 07:44 - pre 47 meseci
U Haskellu nema problema posto je sve f-ja tj nema varijabli ; )
U Rustu moze globalna da bude mut, ali menjanje vrednosti mora da se stavi u "unsafe" blok.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste01.05.2020. u 18:41 - pre 47 meseci
Code:
'jabuke'.translate(str.maketrans({'a': '0', 'e': '1', 'o': '2', 'i': '3', 'u': '4'}))
'j0b4k1'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste01.05.2020. u 19:15 - pre 47 meseci
zaboravio si da obrneš reč i dodaš Acu :)

Code:
'jabuke'[::-1].translate(str.maketrans('aeou', '0123')) + 'aca'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste03.05.2020. u 13:10 - pre 47 meseci
ovo je zanimljivo

>>> string = 'ppy!'
>>> fruit = 'a'.join(list(string))

šta dobiješ?

papaya! :)
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: Zadaci za wannabe pythoniste03.05.2020. u 15:14 - pre 47 meseci
Citat:
djoka_l:

Da, ovo je recimo primer koji treba da se, između ostalih, pokazuje na časovima programiranja, umesto što se samo pokazuju ispravni primeri iz literature, pa posle imamo "programere" koji ne znaju šta da rade kad im se pojavi greška, a čini im se da je sve u redu.

Nego, za taj slučaj korišćenja globalnih promenljivih unutar definicije funkcije je zanimljivo kada se radi o nizovima. Onda .append() metoda funkcioniše bez problema (jer nije dodela nove vrednosti).
Tada će program raditi bez greške, pa će se "uspešno" koristiti globalna promenljiva na pogrešan način.
Drugi problem nastaje ako se (greškom) unutar funkcije za "novo" dodeli vrednost praznog niza (novo =[]), čime se u stvari kreira lokalna promenljiva, a globalna ostaje nepromenjena. Ako je namera bila da definisana funkcija pri pozivu menja vrednost globalne promenljive, desiće se "bug".


Al' hajde, ovo i nije toliki problem, ali ako baš mora da se koristi non-local promenljiva u funkciji, može da se primeni closure:
Code:
def multiplier_of(n):
    def multiplier(number):
        return number*n
    return multiplier

multiplywith5 = multiplier_of(5)
print(multiplywith5(9))

Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste03.05.2020. u 17:17 - pre 47 meseci
Zato ne volim Piton. Ne znas dal definises novu varijablu ili joj dodeljujes vrednost...
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 02:36 - pre 47 meseci
A što, u JS je drugačije (doduše, ima var/let, pa je programer koliko-toliko siguran).

To su stvari vezane za sintaksu jezika. Mada, mnogi ne nauče dobro osnovnu sintaksu i njena značenja, pa posle...
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 08:06 - pre 47 meseci
Zadatak 36: Value of a sentence

Each letter in a sentence is worth its position in the alphabet (i.e. a = 1, b = 2, c = 3, etc...). However, if a word is all in UPPERCASE, the value of that word is doubled.
Create a function which returns the value of a sentence.

get_sentence_value("abc ABC Abc") ➞ 24
# a = 1, b = 2, c = 3

# abc = 1 + 2 + 3 = 6
# ABC = (1+2+3) * 2 = 12 (ALL letters are in uppercase)
# Abc = 1 + 2 + 3 = 6 (NOT ALL letters are in uppercase)

# 6 + 12 + 6 = 24

Examples
get_sentence_value("HELLO world") ➞ 176
get_sentence_value("Edabit is LEGENDARY") ➞ 251
get_sentence_value("Her seaside sea-shelling business is really booming!") ➞ 488

Notes
Ignore spaces and punctuation.
Remember that the value of a word isn't doubled unless all the letters in it are uppercase.
==========

Ja sam svoje rešenje ostavio ovde.
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 13:37 - pre 47 meseci
Malo sam neispavan pa sam probao neka rešenja za koja sam mislio da su jednostavnija korišćenjem find() metode, ali opet ima previše uslova (da li find() vraća -1 ili indeks karaktera).

Međutim, ne radi ti ovo dobro ako imaš npr. tekst "!Aaa", vraća nulu. Jeste da se toga nema u pravom tekstu, ali šta ako je neko pogrešio u kucanju, pa stavio razmak ispred umesto iza znaka uzvika?



Potom, zanimljivo bi bilo modifikovati kod tako da prepozna rečenice iz većeg stringa (i npr. nađe rečenicu sa najvećim brojem vrednošću).

Zanimiljivo rešenje bi bilo da se koristi nešto tipa PERMITTED_CHARS = string.ascii_letters, ili možda samo string.letters ako se prethodno pozove locale.setlocale().
Potom za svaku rečenicu ukloniti sve karaktere koji nisu slova, pa je dalje računanje vrednosti jednostavnije.
U suprotnom, malo ima previše upita oko provere da li npr. alphabet.find vraća -1 ili indeks karakera u alfabetu (alphabet je npr. string.ascii_lowercase).

Kod uvek može da se skrati, čak može dosta toga da se napravi kao složen upit u jednoj liniji, kao npr. (neki kod sa Stackoverflow, nema veze sa ovim zadatkom)
Code:
sum(i for i in array if array.index(i) % 2 == 0)*array[-1] if array != [] else 0

međutim, pitanje je da li se takav kod izvršava brže nego kod koji ima if...else strukturu. Nekada se izvršava brže, ali češće ne.
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 14:27 - pre 47 meseci
@a1234567

Moram nešto da te pitam, ali nemoj da se ljutiš. Cenim tvoj entuzijazam, ali prošlo je 4 meseca, a ti si na zadatku 36. Realno, tvoj napredak je ravan kursu python programiranja posle 20 časova kursa, pod uslovom da kurs ima 100 časova.

Kakav ti je plan? Realno, trebaće ti jedno dve godine da stigneš do kraja knjige.
Nama je ovo razbibriga, zadaci su na nivou rešavanja u roku od 5-10 minuta. Ne znam čime se baviš u životu, ali da si posvetio učenju pythona 6 sati nedeljno, do sada bi već mogao da praviš programe od 1000 linija KOJI RADE...
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
82.117.201.26



+1064 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 14:32 - pre 47 meseci
Djoka:"ali da si posvetio učenju pythona 6 sati nedeljno, do sada bi već mogao da praviš programe od 1000 linija KOJI RADE... "

Jedno je Python, a drugo programiranje. Za programiranje treba mnogo vise vremena, a Python bar po meni nije najsrecnije
resenje za ucenje programiranja.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
65.18.117.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 15:23 - pre 47 meseci
Đoko, cenim i ja tvoju brigu.

Zadatak je 36, ali ovde, ne u Stivensonovoj knjizi.
Tamo ih je mnogo više, ali sam ja odabrao neke koji su meni bili zanimljivi.

Pošto sam došao do kraja knjige, krenuo sam po netu da tražim ove Python challenge sajtove i naišao na Checkio,
koji je meni prilično zanimljiv, tako da sam tamo krenuo od početka. No ti početni zadaci su laki, tako da nisam hteo da ih stavljam ovde. Ali meni su dobri za utvrđivanje gradiva. Kad naiđu teži, postaviću, ne brini :)

Drugi challenge sajt koji je možda i bolji od ovog prvog je Edabit, jer možeš da biraš odmah zadatke po stepenu težine. Odatle sam uzeo poslednja dva zadatka.

Ne sećam se više da li sam objasnio svoju poziciju po pitanju svega ovoga, ali evo da probam. Ja dolazim iz oblasti humanističkih nauka, dakle nemam veze ni sa tehnikom, ni sa matematikom, a ni sam računarima. U školi sam matematiku buvalno mrzeo, što je donekle i uticalo na koju ću stranu da se usmerim u školovanju, iako mi je brat bio mašinac. Mi smo dakle po obrazovanju, interesovanjima, a onda i sposobnostima, dva potpuno različita sveta, te vas zato molim za razumevanje i strpljenje. Inače, kompjutere koristim dugo, naravno samo kao korisnik. No, isto toliko dugo me je znatiželja navodila da se pitam šta se u toj crnoj kutiji dogodi između pritisnutog tastera i ispisa na ekranu, ali nisam bio u prilici da za to odvojim vreme. Sada ga imam u ograničenim količinama i krenuo sam u istraživanje i to zaista sa velikom radošću, jer volim da učim nove stvari. A ovo je za mene kao da otkrivan novi, do sada nepoznati kontinent. Dakle, nisam ni pod kakvim pritiskom promene karijere ili slično, već je za mene ovo čist hobi i radost učenja, proširivanja vidika i obogaćivanja načina razmišljanja. Uvek su me inspirisali ljudi koji nisu fah idioti i misle da je to što rade jedina važna stvar na svetu, već oni koji imaju šire obrazovanje.

Nažalost, ne mogu učenju programiranja da posvetim 6 sati, samo onoliko koliko mi slobodno vreme dopušta, a to je sat-dva dnevno. Što na duže staze i nije tako malo. No, problem je što ja krećem ne od nule, već od minus 10 :)) Ali u isto vreme, kada sednem da rešavam neki zadatak, radim to zaista sa zadovoljstvom i uzbuđenjem pred novim izazovom. Pošto sam samouk potrošim sigurno pet puta više vremena nego da sam na nekom kursu sa živim predavačem, jer jednostavno dok rešavam zadatak nemam koga da pitam sem brata Gugla. Ali šta da mu radim. Uvek sam u životu pokušavao da uradim najbolje od onoga što mi je na raspolaganju, umesto da kukam i odustanem ili maštam šta bi bilo kad bi bilo. Dakle, moj napredak jeste spor, ali to je verovarno tako sa svakim ko je samouk. A i ako nije, who cares? :)

Ja lično sam zadovoljan. Do pre koji mesec nisam znao gomilu stvari koje sada znam. Drugi bitan faktor ograničenja je i to što moj mozak jednostavno nije navikao da razmišlja na programerski način. Skloniji je metaforama, nego algoritmima, pa su moja rešenja toliko "kreativna", da ne kažem komplikovana i pogrešna :)) Ali nadam se da ću vremenom i to savladati.

Sve u svemu, kad povučem crtu, ne mogu da kažem da sam nezadovoljan, sve dok napredujem, pa makar i mic po mic. Hvala vam svima što ste se potrudili da mi pomognete. Bez toga bi taj mic bio još manji.

Eto, malo sam odužio, ali nadam se da vam je sada lakše da se stavite u moje cipele i možda razumete zašto napredak nije brži nego što jeste :)
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste04.05.2020. u 19:51 - pre 47 meseci
Gledao sam onaj drugi sajt (Edabit) zato što nije trebalo da se ulogujem. Pretpostavljam da je i prvi sličan. Sličan i kao project euler.

Uglavnom, ti sajtovi nisu dobri za UČENJE programiranja. Nećeš naučiti jezik tako što ćeš da rešavaš "cake". Treba da se vratiš na onu tvoju knjigu i da ponovo prođeš zadatke koje idu posle lekcija. Bitno je da naučiš KONCEPTE.

Slabo koristiš funkcije, ne koristiš exception, ne praviš projekte koji se sastoje od više python programa. Ne praviš svoje biblioteke.
Vrati se ponovo na onaj tvoj projkat rečnika. To će ti više značiti nego rešavanje ovih zadataka od 5 linija.
 
Odgovor na temu

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

Strane: << < .. 23 24 25 26 27 28 29 30 31 32

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

Postavi temu Odgovori

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