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

Zadaci za wannabe pythoniste

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

Strane: << < .. 13 14 15 16 17 18 19 20 21 22 ... Dalje > >>

[ Pregleda: 51002 | 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 pythoniste28.02.2020. u 18:10 - pre 49 meseci
Ja sam mislio više na stilsku analizu vokabulara koji pisac koristi.

Iz ovo malo reči kod Crnjanskog, možeš povaditi
aranđel
najposle
berenklau
činjaše
gospoža

dakle arhaizme, strane reči ili glagolske oblike koji nisu deo savremenog govora
i raspredati o njegovom stilu.
Pa onda te zaključke uporediti sa istim takvim zaključcima kod nekih drugih pisaca
koji pripadaju možda različitim umetničkim pravcima ili epohama itd.
Mogućnosti su velike.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste28.02.2020. u 19:38 - pre 49 meseci
Citat:
A ja našao ovaj primer i probao da ga odradim kod mene na računaru

from string import maketrans # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab)

When we run above program, it produces following result −

th3s 3s str3ng 2x1mpl2....w4w!!!


Koju verziju Pythona koristiš? U Pythonu 3 string modul nema maketrans i translate funkcije, zamenjene su sa str.maketrans i str.translate metodama str klase, help(str). Tako da maketrans(intab, outtab) zameni sa str.maketrans(intab, outtab). Takođe, print str.translate(trantab) sa print(str.translate(trantab)).

Inace maketrans ima i treći argument koji je string, koji sam ja u primeru iskoristio da uklonim znakove interpuncije.

Code:
import string

string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

my_string = 'hello, world!'

my_string.translate(my_string.maketrans('hw', 'HW', string.punctuation))
'Hello World'


Citat:
maketrans(x, y=None, z=None, /)
| Return a translation table usable for str.translate().
|
| If there is only one argument, it must be a dictionary mapping Unicode
| ordinals (integers) or characters to Unicode ordinals, strings or None.
| Character keys will be then converted to ordinals.
| If there are two arguments, they must be strings of equal length, and
| in the resulting dictionary, each character in x will be mapped to the
| character at the same position in y. If there is a third argument, it
| must be a string, whose characters will be mapped to None in the result.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 02:14 - pre 49 meseci
A to je kvaka, koristim Python 3.8.
Što ti ne pređeš na noviju verziju?

Da, to sam video sa tri argumenta, da si koristio. Vrlo korisno, jer uklanja iz stringa sve što je u tom trećem arg.
Pa još kad se kombinuje sa .punctuation.
Sa string.maketrans praviš translacionu tabelu
a sa str.translate ga odradi.

A čemu služi maketrans sa jednim argumentom.
Vidim da u rečniku pretvara slovo u unikod broj.
Kad mi to treba?
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 05:17 - pre 49 meseci
Kao što piše u gore citiranom, ako je samo jedan argument, on mora da bude dictionary. Na primer, prvi i drugi argument moraju da budu iste dužine, tj. da imaju isti broj karaktera, recimo da hoćeš slovo h da zameniš sa XYZ:

Code:
'hello, world!'.translate(str.maketrans('h', 'XYZ'))
ValueError: the first two maketrans arguments must have equal length

'hello, world!'.translate(str.maketrans({'h': 'XYZ'}))
'XYZello, world!'


Ili na primer, kao u zadatku da ukloniš znakove interpuncije, umesto da koristiš kao treći argument string.punctuation, možeš da ih definišeš u rečniku, npr.:

Code:
'hello, world!'.translate(str.maketrans({'h': 'XYZ', ',': '', '!': ''}))
'XYZello world'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:13 - pre 49 meseci
Ma video sam da kod jednog argumenta mora d abude rečnik, ali mi to nije mnogo pomoglo.
Ali sad vidim da je to u stvari skoro pa isto.
Ili imaš dva argumenta, pa drugi menja prvi, ili imaš jedan, tj. rečnik, koji se takođe sastoji od para - key: value
pa mu opet dođe kao da imaš dva argumenta :)

Jedina je razlika u dužini. I ovo mi se sviđa što value menja key bez obzira na dužinu jednog i drugog.

Hvala na jasnim objašnjenjima, sad mi je jasno šta i kako radi.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:23 - pre 49 meseci
"Jedina je razlika u dužini. I ovo mi se sviđa što value menja key bez obzira na dužinu jednog i drugog."

Dužina ključa mora da bude 1, npr. recimo da hoćeš he da zameniš sa XYZ:

Code:
'hello, world!'.translate(str.maketrans({'he': 'XYZ',}))
ValueError: string keys in translate table must be of length 1

'hello, world!'.translate(str.maketrans({'h': 'XYZ', 'e': ''}))
'XYZllo, world!'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:24 - pre 49 meseci
I da ne bi mnogo dangubili, evo i naredni zadatak broj 26.

Napravi program koji računa zbir brojeva koje unese korisnik,
a ignoriše unos koji nije ceo ili decimalni broj. Program treba da
ispiše tekući zbir posle svakog unetog broja. Takođe, ispisuje
poruku posle svakog ne-brojčanog unosa i potom nastavlja
da sabira ako je naredni unos ispravan. Izlazak iz programa je
sa praznim unosom, tj. enterom.

Svoje rešenje sam postavio ovde.


Testirajući program sa unosom decimalnih brojeva imam često ovakvu situaciju:

Unesi neki broj. Enter za izlaz: 2
Zbir je: 2.0
Unesi neki broj. Enter za izlaz: 6
Zbir je: 8.0
Unesi neki broj. Enter za izlaz: 5
Zbir je: 13.0
Unesi neki broj. Enter za izlaz: 3
Zbir je: 16.0
Unesi neki broj. Enter za izlaz: 2.6
Zbir je: 18.6
Unesi neki broj. Enter za izlaz: 5.1
Zbir je: 23.700000000000003


Pa jel to python ima problem sa sabiranjem decimalnih brojeva!?
Gvido alert! Možeš ti to i bolje.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:34 - pre 49 meseci
Nepreciznost floating point aritmetike.... nije to do Pythona.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:35 - pre 49 meseci
Citat:
Panta_:
"Jedina je razlika u dužini. I ovo mi se sviđa što value menja key bez obzira na dužinu jednog i drugog."

Dužina ključa mora da bude 1, npr. recimo da hoćeš he da zameniš sa XYZ:

Code:
'hello, world!'.translate(str.maketrans({'he': 'XYZ',}))
ValueError: string keys in translate table must be of length 1

'hello, world!'.translate(str.maketrans({'h': 'XYZ', 'e': ''}))
'XYZllo, world!'


aaa to je caka. Šta sve Švaba neće smisliti da nam zagorča život :D

Pa dobro, onda mora zamena one by one.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:37 - pre 49 meseci
Aj ti napravi da moze da duzina kljuca bude vise od 1 :)
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 06:40 - pre 49 meseci
"Pa jel to python ima problem sa sabiranjem decimalnih brojeva!?"

Code:
round(23.700000000000003, 2)
23.7

round(float(18.6 + 5.1), 2)
23.7

float(f'{23.700000000000003:.2f}')
23.7

float(f'{18.6+5.1:.2f}')
23.7


https://docs.python.org/3/tutorial/floatingpoint.html
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 07:14 - pre 49 meseci
Citat:
Branimir Maksimovic:
Aj ti napravi da moze da duzina kljuca bude vise od 1 :)


jel to kao ice bucket challenge!? :D
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 07:27 - pre 49 meseci
Citat:
Panta_:
"Pa jel to python ima problem sa sabiranjem decimalnih brojeva!?"

Code:
round(23.700000000000003, 2)
23.7

round(float(18.6 + 5.1), 2)
23.7

float(f'{23.700000000000003:.2f}')
23.7

float(f'{18.6+5.1:.2f}')
23.7


https://docs.python.org/3/tutorial/floatingpoint.html


Dobro, sad sam i to regulisao.
Ono sa milion decimala izgleda stvarno ružno.

stavio sam
round(zbir,2)

Jedino u tvojim primerima index 2, a zaokruži na 1 decimalu!?
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 07:40 - pre 49 meseci
Probaj sa 2 decimale gde zadnja nije 0. od 23.70 valjda odbaci 0.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 790



+162 Profil

icon Re: Zadaci za wannabe pythoniste29.02.2020. u 08:21 - pre 49 meseci
Code:
round(23.70000, 2)
23.7

f'{23.70000:.2f}'
'23.70'
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 07:31 - pre 49 meseci
Evo nama zadatak broj 27:

Piton koristi # znak da obeleži početak komentara. Komentar se nastavlja od tog znaka do kraja reda.
Napravi program koji uklanja sve komentare iz python izvornog koda. Sačuvaj modifikovani fajl pod novim imenom.
Imena ulaznog i izlaznog fajla treba da unese korisnik u komandnoj liniji. Obezbedi da program prijavi grešku
ukoliko ima problem da pristupi jednom od fajlova.

Stigao sam dovde i sve lepo radi:

Code:
with open('fajl1.txt', 'r') as f:
    redovi = f.readlines()

with open('fajl2.txt', 'w') as g:
    for red in redovi:
        red = red.split('#')   
        obrishi = red[0].rstrip()
        g.writelines(obrishi)
        g.writelines('\n')


Ali kad sam pokušao da to apgrejdujem do pune verzije kakva se traži u zadatku,
nešto ne radi. A ne vidim razlog.

Code:
import sys

# Provera da su dati svi argumenti.
if len(sys.argv) != 3:
    print("Unesi ime fajla čije komentare brišeš i ime za novi fajl. Npr. >> 27.py komentari.py bez.txt")
quit()

try:
    with open(sys.argv[1], 'r') as f:
        redovi = f.readlines()
        
    with open(sys.argv[2], 'w') as g:
        for red in redovi:
            red = red.split('#')   
            obrishi = red[0].rstrip()
            g.writelines(obrishi)
            g.writelines('\n')
except:
    print("Greška pri učitavanju fajla.")
quit()
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 08:24 - pre 49 meseci
quit() mora da bude indentovano isto kao print, inače svaki put izlalziš iz programa posle if-a
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 794



+630 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 09:10 - pre 49 meseci
Ovo uopste nije lak zadatak. Tvoje resenje recimo da radi, ali ne bas za sve slucajeve. Pogledaj sta tvoj program radi za ovakve linije koda:
Code:
print "# je nekom taraba, a nekom povisilica (F#==Fis)"   # A ovo je komentar
linija = re.sub('#.*$', '', linija)   # Jos jedan nacin da se ovo uradi, ali opet ne radi bas ono sto hocemo
print 'Za stanje na racunu otkucajte "*101#" ...'     # Ako imamo '#' u liniji (# je separator komentara u Pythonu, ali ne u C#, tamo se koristi //)
print "*106*" + telefon + "#123#" + '#'    # Ako imamo '#' u liniji (# je separator komentara u Pythonu, ali ne u C#, tamo se koristi //)

Evo, smislio sam ti bas primere da se pomucis ...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 10:07 - pre 49 meseci
Beri, malo ti je sintaksa zastarela, ovo ne prolazi u Pythonu 3
Mislim da bi bio "overkill" da ga nateramo da koriti paket tokenize ili da sam pravi leksički analizator.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 10:24 - pre 49 meseci
Citat:
djoka_l:
quit() mora da bude indentovano isto kao print, inače svaki put izlalziš iz programa posle if-a


Bravo Đoko
Pa da, ovako nije ni išao kroz petlju,
a ja se čudim što ne radi :)


 
Odgovor na temu

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

Strane: << < .. 13 14 15 16 17 18 19 20 21 22 ... Dalje > >>

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

Postavi temu Odgovori

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