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

Zadaci za wannabe pythoniste

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

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

[ Pregleda: 15621 | Odgovora: 430 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 10:31 - pre 25 dana i 22h
Citat:
B3R1:
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 ...


pa ništa, dodao tri spejsa pre # i oljušti ga od komentara ko kuvarica mlad krompir :D

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

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 668



+116 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 11:43 - pre 25 dana i 21h
Sada ti ne radi ako linija počinje sa # ili ako ima dva ili manje razmaka ispred. ;)
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 326



+182 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 11:56 - pre 25 dana i 21h
Citat:
a1234567:
pa ništa, dodao tri spejsa pre # i oljušti ga od komentara ko kuvarica mlad krompir :D

Code:
>>> print "String se zavrsava sa #"#A odavde pocinje komentar, koji moze imati i "#hashtag" ili "nesto [email protected]"
String se zavrsava sa #

Naravoucenije: razmaci su nebitni.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 11:56 - pre 25 dana i 21h
Panto, zadatak je odrađen.
A ti sad zakeraj koliko hoćeš
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 326



+182 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 12:38 - pre 25 dana i 20h
Citat:
a1234567: Panto, zadatak je odrađen.
A ti sad zakeraj koliko hoćeš :D

Pa i nije bas ... vidi gornji primer koji ne radi. Da bi ga resio moraces da analiziras karakter po karakter i da pamtis stanje. Kriticni karakteri koje treba da pamtis su ti apostrof, navodnici ili taraba.

* Ako navodnik naidje prvi (pre tarabe) - tada smatras da si u string-modu, pa tarabe i apostrofe smatras delom stringa sve dok ne naidje zavrsni navodnik (kada zatvaras string)
* Ako apostrof naidje prvi (pre tarabe) - tada smatras da si u string-modu, pa tarabe i navodnike smatras delom stringa sve dok ne naidje zavrsni apostrof (kada zatvaras string).
* Ako naidje taraba, a nisi u string-modu - to je prelomni znak od koga treba da "ljustis" sve zdesna.

Eto, sada napisi kod ... Eh da, ima i dva posebna slucaja - znaci \' i \" koji se, ako se nadju unutar stringa, smatraju delom stringa:
Code:
print "Ovaj # je deo stringa, kao i \"ovaj #\", a mozda i # isto tako"# Ali ovaj nije

Ali hajde, preskoci taj slucaj za pocetak, to mozes da odradis i kasnije ... mada nije tesko.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 2792



+1144 Profil

icon Re: Zadaci za wannabe pythoniste03.03.2020. u 12:40 - pre 25 dana i 20h
U pythonu, za razliku od nekih drugih jezika, znak "#" ne može da bude deo identifikatora (imena varijable ili rezervisana reč).
Dakle, "#" može da se pojavi ISKLJUČIVO u dva konteksta - ili kao početak komentara, ili kao deo stringa.

Utoliko je onda lakše da se uradi analiza teksta i izbace komentari.

String literal može da počne i da se završi jednostrukim znakom navoda, dvostrukim znakom navoda, ili da se (multilinijski string literal) započne i završi sa tri jednostruka znaka navoda ili 3 dvostruka znaka naloga.
Onda parser treba da zna da pronađe početak i kraj string literala (treba paziti na to da se unutar string može nalaziti \' ili \" kako bi se uneo znak navoda u string), a sve što nije "quoted" tekst da se čita do prve pojave "#" i da se onda od tog znaka do kraja reda ignoriše ostatak linije.

[Ovu poruku je menjao djoka_l dana 03.03.2020. u 14:45 GMT+1]
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste04.03.2020. u 08:42 - pre 25 dana
Evo verzije 2.0 rešenja zadatka 27,
koja sada uklanja komentare i u redovima koji imaju više #.

Idem slovo po slovo od kraja reda i tražim #, tu podelim red i odsečem desni deo.
Nije jako komplikovano.

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

with open('fajl2.txt', 'w') as g:
    for red in redovi:
        if len(red.strip()) == 0:  # sačuvaj prazne linije
            g.writelines(red)
        elif red[0] == '#':        # ukloni ceo red ako počinje sa #
            g.writelines('\n')
        elif '#' not in red:       # prekopiraj red ako nema #
            g.writelines(red)
        else:                      # briši deo red desno od poslednjeg #
            for i in range(len(red) -1, -1, -1):
                if red[i] == '#':
                    red1 = red.split(red[i])   
                    obrishi = red1[0].rstrip()
                    g.writelines(obrishi)
                    g.writelines('\n')


Ostale egzibicije ostavljam iskusnim programerima
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 3962
109.72.51.*



+869 Profil

icon Re: Zadaci za wannabe pythoniste04.03.2020. u 08:47 - pre 25 dana
a kamo ako je # u okviru string literala?
press any key to continue or any other to quit....
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste04.03.2020. u 08:58 - pre 25 dana
Nema veze, komentar je na kraju reda, tako da prvi desni # označava komentar
svi ostali, pa i ti u stringu, su levo od njega.
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 326



+182 Profil

icon Re: Zadaci za wannabe pythoniste04.03.2020. u 10:31 - pre 24 dana i 22h
Citat:
a1234567: Nema veze, komentar je na kraju reda, tako da prvi desni # označava komentar
svi ostali, pa i ti u stringu, su levo od njega.

Pa i nije bas:
Code:

    print "Primer koda"  # Komentar pocinje ovde, # a ne ovde

Evo resenja koje obuhvata sve slucajeve, s objasnjenjem sta se tu tacno radi ... napominjem da je ovo bas osnovacko resenje, ali korisno da uvidis neke stvari koje se koriste u slicnim problemima (eksperti bi to odradili drugacije, ali o tom potom):
Code:

#!/usr/bin/python

import sys

for line in open(sys.argv[1], 'r').readlines():
    line = line.rstrip()
    q_single = False        # Apostrof (')
    q_double = False        # Navodnik (")
    escape = False          # Backslash (\)
    prev_char = ''          # Pamti prethodni znak u redu
    for pos,ch in enumerate(line):
        if (q_single or q_double) and escape:
            escape = not escape
            continue
        elif (q_single or q_double) and (ch == "\\"):
            escape = not escape
            continue
        elif (ch == '"' and prev_char != "\\" and not q_single and not escape):
            q_double = not q_double
        elif (ch == "'" and prev_char != "\\" and not q_double and not escape):
            q_single = not q_single
        elif (ch == '#' and not q_single and not q_double):
            line = line[:pos]
            break
        prev_char = ch
    print line

Kao sto sam vec pomenuo, u ovom problemu moras da ispitas da li se taraba nalazi unutar string literala ("Ova # je unutar literala") ili ne ("Ovo je literal" # A ovo komentar). I kao sto sam ti vec predlozio gore, moras da skeniras znak po znak u svakoj liniji i da donosis odluku da li ti je trenutna pozicija "skenera" unutar ili van literala. U gornjem primeru smo definisali tri logicke promenljive, cije vrednosti menjamo u toku programa koristeci logiku:
Code:

var = False
...
var = not var

Ova klik-klak tehnika u programiranju, poput prekidaca, se inace naziva 'toggle'. Kad god prodjes kroz liniju 'var = not var', promenljiva var naizmenicno menja vrednost od True ka False i obrnuto. U ovom kontekstu toggle smo koristili kao indikator STANJA, odnosno moda. Kada naidjemo na navodnik ("), prolazimo kroz toggle (q_double = not q_double), cime menjamo stanje literala - ako smo bili van literala sada smo unutar i obrnuto. Znaci - kada naidjes na prvi navodnik, program smatra da je string literal zapocet, a kada ponovo naidjes na isti tip navodnika literal je zavrsen. Slicno vazi i za apostrof, za literale koji su oiviceni apostrofima koristimo toggle q_single. Ali recimo, navodnik (") unutar literala oivicenog apostrofima (npr. 'Ovaj znak " je unutra') ili obrnuto ("Ovaj znak ' je unutra") ne sme da se broji ni kao pocetak, ni kao kraj literala, vec kao njegov deo. Osnovni program bi znaci bio:
Code:

...
if (ch == '"' and not q_single):        # Naisao je ", ali ne unutar literala oivicenog sa '
    q_double = not q_double
elif (ch == "'" and not q_double):     # Naisao je ', ali ne unutar literala oivicenog sa "
    q_single = not q_single
...

Ostaje da resimo slucaj \" i \'. To su escape znaci, koriste se kada unutar literala koristis isti znak kojim se definisu granice literala - npr. "Rec \"google\" oznacava inace ...". Tu u igru vec ulazi pamcenje prethodnog znaka, za sta se koristi prev_char. Na kraju, najtezi slucaj je kada se pojavi \\ unutar literala, sto se u Pythonu koristi za sam backslash. Tu uvodimo i ovaj toggle escape kojim se taj slucaj resava.

Gornji primer je prost, ali resava konkretan deo sintakse Pythona (parsiranje komentara). Profesionalci koji pisu kompajlere ne rade to tako pesice. Parsiranje sintakse teskta je nauka za sebe, ali i nije neka visa matematika i fizika ... :-). Kao sto se vidi cak i u gornjem primeru, kljucni pojam je STANJE (namerno napisano velikim slovima) - biti unutar i van literala je primer stanja. Biti unutar for() ili while() petlje ili if() strukture je takodje primer stanja. Znaci, treba nam algoritam koji pamti stanje sistema i u zavisnosti koji karakter/slovo/rec/sta god ... dodje dok si u stanju X, sistem prelazi u stanje Y ili Z. Ta problematika je stara vec solidnih 60 godina, time su se bavili i Turing, kao i Moore i Mealy i naziva se teorija konacnih automata. (Finite State Machines - FSM). Na ovom blog postu lik je zaista lepo objasnio kako se FSM moze implementirati u Pythonu.

Medjutim, FSM je samo temelj price. Svakako da profesionalci ne prave FSM bas uvek od nule. Postoje gotovi alati za parsiranje sintakse - lex, yacc, bison, flex ... o njima mozes da procitas ovde ako te zanima, ali to ti je vec masterclass nivo.

Ali ima i nesto sto mozes da savladas cak i na ovom nivou. Programeri ne prave kompajlere svaki dan ... osim ako se ne zovu Guido van Rossum :-). Obicnim smrtnicima - IT-sljakerima je mnogo potrebnije da parsiraju dokumente formatirane u nekom markup jeziku - HTML, SGML, XML ... Recimo, s nekog servera ti stize HTML tabela, sa sve onim <TD></TD> tagovima, a zelis da izdvojis podatke iz te tabele. Ili neki XML fajl, tipa: <TEMPERATURA>27</TEMPERATURA><PRITISAK>1000</PRITISAK> ... naravno, i to moze da se radi alatima opisanim gore, ali ljudi vise vole gotovanska prosta resenja. Srecom, ima tako nesto, zove se BeautlfulSoup, koji ti omogucava da neki HTML ili XML dokument parsiras lako ... bs4 moze da koristi i apsolutni pocetnik. Eto ti ideje za neki naredni zadatak ...

[Ovu poruku je menjao B3R1 dana 04.03.2020. u 11:48 GMT+1]
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 668



+116 Profil

icon Re: Zadaci za wannabe pythoniste04.03.2020. u 19:41 - pre 24 dana i 13h
Evo sličnog rešenja, osim što prolazi znak po znak samo linije koje sadrže # znak:

Code (python):
lines = open('python_file.py').readlines()

for line in lines:
    line = line.rstrip()
    if '#' in line:
        in_str=False
        pos=0
        for char in line:
            if char == '"' or char == "'":
                if not in_str:
                    in_str=True
                    quote=char
                else:
                    if char == quote and prev_char != '\\':
                        in_str=False
            elif char == '#' and not in_str:
                line = line[:pos]
                break
            prev_char = char
            pos+=1
    print(line)
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste05.03.2020. u 08:20 - pre 24 dana
Baš ste se obojica potrudili da mi objasnite. Hvala vam.
Potrudio sam se i ja da razumem, ali slabo ja to kapiram. :(
Biće da još nisam na tom nivou.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste05.03.2020. u 10:00 - pre 23 dana i 23h
Sigurno bi pomoglo ako bi se stvar pojednostavila, da bude samo jedan slučaj.
Recimo, da u stringu uklonim deo iza # ako nije unutar duplih navoda, a ako jeste da ostane.
Recimo ovakav slučaj:

line = 'They are designed "to whet your #appetite", not fill you up.'

Ali ja za sada umem da ga uklonim u svakom slučaju:

Code:
for pos, ch in enumerate(line):
    if ch == '#': 
        line = line[:pos]
        print(line)

i dobijem 'They are designed "to whet your'

Teorijski mi je jasno, naravno, da "skener" idući slovo po slovo kad naiđe na prvi navodnik uključi stanje False
i ako u tom stanju naiđe na # ne briše ga.
Kad naiđe na drugi navodnik, prebaci na stanje True i posle toga ako naiđe na # briše nastavak reda.
Ali nažalost ni pored primera ne kapiram baš kako to prevesti u kod.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 668



+116 Profil

icon Re: Zadaci za wannabe pythoniste05.03.2020. u 14:44 - pre 23 dana i 18h
"Sigurno bi pomoglo ako bi se stvar pojednostavila, da bude samo jedan slučaj."

Evo malo pojednostavljen slučaj sa samo jednom vrstom navodnika i bez escape (\) znaka:

Code (python):

linija = """ 'Ovo je # znak unutar stringa' # Ove je # znak izvan stringa """.strip()

da_li_sam_u_stringu = 'Nisam'

for pozicija, znak in enumerate(linija):
    if znak == "'":
        print(f'{pozicija}. {znak} Našao sam znak {znak}. Proveravam da li sam unutar stringa...')
        if da_li_sam_u_stringu == 'Nisam':
            da_li_sam_u_stringu = 'Jesam'
            print(f'Da li sam u stringu? {da_li_sam_u_stringu}')
        else:
            da_li_sam_u_stringu = 'Nisam'
            print(f'Da li sam u stringu? {da_li_sam_u_stringu}')
    elif znak == '#':
        print(f'{pozicija}. {znak} Našao sam znak {znak}. Proveravam da li sam u stringu...')
        if da_li_sam_u_stringu == 'Nisam':
            print(f'Nisam u stringu. Ispisujem liniju do pozicije {znak} znaka i prekidam izvršavanje:\n')
            print(linija[:pozicija])
            break
        else:
            print(f'Još uvek sam u stringu. Nsatavljam.')
    else:
        print(f'{pozicija}. {znak}')



Izlaz:

0. ' Našao sam znak '. Proveravam da li sam unutar stringa...
Da li sam u stringu? Jesam
1. O
2. v
3. o
4.  
5. j
6. e
7.  
8. # Našao sam znak #. Proveravam da li sam u stringu...
Još uvek sam u stringu. Nsatavljam.
9.  
10. z
11. n
12. a
13. k
14.  
15. u
16. n
17. u
18. t
19. a
20. r
21.  
22. s
23. t
24. r
25. i
26. n
27. g
28. a
29. ' Našao sam znak '. Proveravam da li sam unutar stringa...
Da li sam u stringu? Nisam
30.  
31. # Našao sam znak #. Proveravam da li sam u stringu...
Nisam u stringu. Ispisujem liniju do pozicije # znaka i prekidam izvršavanje:

'Ovo je # znak unutar stringa'
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 326



+182 Profil

icon Re: Zadaci za wannabe pythoniste05.03.2020. u 15:07 - pre 23 dana i 18h
Python dopusta koriscenje apostrofa (') i navodnika (") kao oznake granice niza znakova (string), s tim da se za pocetak i kraj stringa moraju da koriste isti znaci. Znaci:
Code:

'ili ovo'
"ili ovo"
'NE MOZE OVAKO"   # OVO JE NEPRAVILNO!
"NITI OVAKO'          # I OVO JE GRESKA!
"Ispred slova 'I' pocinje, a iza tacke se zavrsava."
'Ispred slova "I" pocinje, a iza tacke se zavrsava.'

U kodu iz primera koji si naveo, ispred prve reci (They) nalazi se APOSTROF ('), dok se ispred "to" nalazi NAVODNIK ("). To su dva razlicita karaktera ...

Python dopusta i jednu i drugu varijantu ravnopravno, ali moras da budes dosledan - kako pocinjes string, tako ga i zavrsavas, ne mozes da mesas babe i zabe.

Inace, u nekim drugim programskim jezicima postoji znacajna, ali bitna razlika izmedju stringova oivicenih navodnicima ("blabla") ili apostrofima ('blabla'). Recimo, PHP i Perl kada napises:
Code:

$ dan = "Ponedeljak";
print "Danas je $dan\n";   # U PHP: echo umesto print
print 'Danas je $dan\n';    # U PHP: echo umesto print

Dobijes kao rezultat:
Code:

Danas je ponedeljak
Danas je $dan\n

U prvom slucaju (navodnici) Perl i PHP zamenjuju $dan vrednoscu promenljive $dan unutar stringa oivicenog navodnicima ("). Ako se string oivici apostrofima (') string se prikazuje as-is, odnosno nema zamene promenljivih, niti tumacenja escape sekvenci (\n, \r itd.).
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste06.03.2020. u 10:18 - pre 22 dana i 23h
Citat:
Panta_:
"Sigurno bi pomoglo ako bi se stvar pojednostavila, da bude samo jedan slučaj."

Evo malo pojednostavljen slučaj sa samo jednom vrstom navodnika i bez escape (\) znaka:

Panto, svaka čast za pedagoški pristup :)
Treba da objaviš negde tutorial za ovo.

Da, sad mi je slika mnogo bistrija, jer je i primer jednostavniji.
Dakle ovo sad sasvim lepo radi

Code:
linija = """ 'Ovo je # znak unutar stringa' # Ove je # znak izvan stringa """.strip()

stanje = False

for index, char in enumerate(linija):
    if  char == "'":
        if stanje == False:
            stanje = True  
        else:
            stanje = False
    elif char == "#":
        if stanje == False:
            print(linija[:index])
            break




 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste06.03.2020. u 10:30 - pre 22 dana i 22h
Citat:
B3R1:
Python dopusta koriscenje apostrofa (') i navodnika (") kao oznake granice niza znakova (string), s tim da se za pocetak i kraj stringa moraju da koriste isti znaci. Znaci:
Code:

'ili ovo'
"ili ovo"
'NE MOZE OVAKO"   # OVO JE NEPRAVILNO!
"NITI OVAKO'          # I OVO JE GRESKA!
"Ispred slova 'I' pocinje, a iza tacke se zavrsava."
'Ispred slova "I" pocinje, a iza tacke se zavrsava.'

U kodu iz primera koji si naveo, ispred prve reci (They) nalazi se APOSTROF ('), dok se ispred "to" nalazi NAVODNIK ("). To su dva razlicita karaktera ...


Berislave, znam za pravilo da nema mešanja navodnika. Što je sasvim razumljivo. To su različiti karakteri.
Kod mene su dupli navodnici unutar stringa koji počinje i završava jednostrukim navodnicima.
Tako da mislim da nije greška.
Evo napravio sam ovu kombinaciju:

Code:
linija = 'They are designed "to whet your appetite" # not fill you up.'
lin = linija.strip()

stanje = False

for index, char in enumerate(lin):
    if  char == '"':
        if stanje == False:
            stanje = True
        else:
            stanje = False
    elif char == "#":
        if stanje == False:
            print(lin[:index])
            break

i rezultat je

They are designed "to whet your appetite"
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
138.197.144.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste07.03.2020. u 11:45 - pre 21 dana i 21h
Zadatak broj 28

Napiši program koji čita fajl sa listom reči, zatim nasumično bira dve ili tri od njih i spaja, kako bi napravio
novu lozinku. Kada pravi lozinku, njena dužina ne treba da bude manja od 10 slova, a da reči koje se koriste nisu
kraće od tri slova. Neka početna slova tih reči budu velika, tako da korisnik lako vidi gde se završava jedna i gde
počinje sledeća reč. Na kraju, program ispisuje novu lozinku za korisnika.

Moje rešenje je ovde.
 
Odgovor na temu

Panta_
Aleksandar Pantić
Kragujevac

Član broj: 214959
Poruke: 668



+116 Profil

icon Re: Zadaci za wannabe pythoniste08.03.2020. u 06:47 - pre 21 dana i 2h
"Kada pravi lozinku, njena dužina ne treba da bude manja od 10 slova, a da reči koje se koriste nisu kraće od tri slova"

Tvoje rešenje koristi i reči kraće od tri slova. Treba u random.choice() da filtriraš reči duže od dva slova.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 225
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste08.03.2020. u 11:03 - pre 20 dana i 22h
Ja sam to elegantno rešio tako što sam u početni fajl words.txt stavio samo reči koje imaju 3 i više slova

Ali dobro, sad sam ubacio još jednu petlju da selektujem takve reči, ako u fajlu ima kraćih

Code:
import random

lozinka = ''
redovi3 = ''
with open('words.txt', 'r') as fajl:
    redovi2 = fajl.readlines()

for i in redovi2:
    if len(i) >= 4:
        redovi3 += i.capitalize()

while len(lozinka) <= 12:
    lozinka += random.choice(redovi3.split()).rstrip()
print('Tvoja nova lozinka je:\n\n', lozinka) 
 
Odgovor na temu

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

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

[ Pregleda: 15621 | Odgovora: 430 ] > FB > Twit

Postavi temu Odgovori

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