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

Python petlja

[es] :: Python :: Python petlja

[ Pregleda: 3277 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.ptt.yu

Sajt: aurelije.blogspot.com


+47 Profil

icon Python petlja27.11.2002. u 11:11 - pre 260 meseci
Radio sam zadatak u kome je trebalo napisati program koji za za datu matricu dimenzija NxN ispunjenu celim brojevima krecuci se od bilo kog elementa u prvoj koloni do bilo kog elementa u poslednjoj koloni pronalazi put sa najmanjom sumom elemenata. Kretanje je moguce za 1 polje desno, gore i dole. Npr:

1 5 9 8
0 0 9 9
2 1 0 9
5 6 0 0

Napiso sam funkciju s(red, kol, smer) koja krece rekurzivno od svakog elementa pocetne kolone i nalazi najkraci od tog pocetka. Te rezultate cuvam u listi objekata klase Slog (klasa ima polje zbir gde pamti najmanju sumu i polje put gde se pamti najjeftinija putanja). Na kraju samo treba da da pronadjem element liste koji ima najmanje polje zbir.
I tu nastaje problem. Ja to radim klasicno u petlji ali kako god uradim petlju ona se izvrsi samo 1 put. Dakle nagradno pitanje je zasto se petlja u python-u ne petlja? Evo tog dela:
Code:

# uradi s() nad svakim redom
lista = []
for i in range(n):
    lista.append(s(i, 0, DESNO))
    
# nadji najmanju putanju iz liste 
najmanji = lista[0]
for i in range(1, n):
    print i
    if lista[i].zbir < najmanji.zbir:
        najmanji = lista[i]
            
return najmanji


Sve je u redu u kodu do poslednje petlje koja bi trebalo da se izvrsi 3 puta obzirom da je n = 4, a print i mora da odstampa 1, 2, 3, ali se odstampa samo 1!

Ja sam zadatak resio sa lista.sort() pa return lista[0] ali mi se cini da je to neefikasan nacin, a i zivo me zanima sta sa onom petljom nije u redu.

Prilažem i kompletan kod.
Bolje džaba ležat nego džaba radit.
Prikačeni fajlovi
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.itn.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python petlja27.11.2002. u 14:01 - pre 260 meseci
Pre svega, kod ti je uzasno neorganizovan i necitljiv.. Deklarisanje funkcija u funkciji, klasa u funkciji, deklarisanje funkcije u sred implementacije druge funkcije, pa gde to ima???

Drugo, malo debagovanja pre postavljanja pitanja ne bi skodilo, jer je u tome problem.

Trece, korisi samo JEDAN tip indentovanja, ili space ili TAB.

Tebi ne radi skript jer ti ispred return najmanji stoji TAB umesto 4 space-a, te python misli da je to deo for petlje (koja je uvucena sa tab-ovima) pa odmah uradi return i izlazi iz funkcije.

Sredi tab-ove i space-ove i kod ce ti proraditi.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.ptt.yu

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Python petlja27.11.2002. u 14:21 - pre 260 meseci
U pravu si!
Greška u indent-u je posledica editora (UltraEdit). Kada mu se zada komanda indent on samo radi sa spejsovima, a ja inače koristim samo tabove.
Klasu sam stavio u funkciju jer mi samo tu treba. U suštini meni treba slog, a ne klasa. A funkciju s sam tu stavio jer ona koristi promenljivu tabela koju ne dobija preko liste argumenata, pa mi je bilo logično da je umotam u drugu funkciju. Kako bih inače mogao da tražim najjeftiniji put za 2 tabele?
Ako znaš bolji način, bio bih ti zahvalan da mi ga predočiš, pa da ga naučim.

Hvala za pomoć!
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.ptt.yu

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Python petlja28.11.2002. u 05:37 - pre 260 meseci
Pogledao sam ponovo kod. Iz funkcije mat(tabela) bih izbacio definiciju klase Slog i funkciju min(a, b, c). Ali opet ne znam kako da izbacim funkciju s(red, kol, smer).
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.itn.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python petlja28.11.2002. u 11:18 - pre 260 meseci
Evo, prepravio sam ti kod i saljem ga uz poruku.

Elem, izbacio sam funkciju s() tako sto sam u argumente dodao varijablu tabela, sto je sasvim razumljivo.

Program radi bez problema, a i citljiviji je.

Preporucio bih ti da pre citanja Python dokumentacije malo procesljas proceduralno programiranje, jer je to tvoj osnovni problem u konkretnom zadatku.

Naravno, mogao je ceo zadatak da se resi kreiranjem jednog objekta koji ima deklarisane i implementirane metode za racunanje, ali ti takvo resenje prepustam za vezbu.

Pozdrav,
alex.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
Prikačeni fajlovi
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.ptt.yu

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Python petlja30.11.2002. u 08:21 - pre 260 meseci
Hvala još jednom.
Sada me zanima nešto. Ako imam listu referenci na objekte klase koja imaju redefinisan __str()__ metod zašto <print lista> ne poziva str metod za svaki element liste već kao rezultat dobijem adrese referenci. A kako to da lista.sort() pozove cmp() za svka element a prin neće slično da se ponaša?
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.dial.InfoSky.Net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Python petlja04.01.2003. u 09:44 - pre 259 meseci
Hm, pretpostaviću da si umesto __str()__ mislio na __str__ (a zagrade možeš staviti posle ako hoćeš da naglasiš o čemu se radi).


Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.ptt.yu

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Python petlja05.01.2003. u 15:58 - pre 259 meseci
Da mislio sam na redefinisanje funkcije __str__(self) iz klase Object. Imaš kod poslat u ranijim postovima.
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.dial.InfoSky.Net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Python petlja05.01.2003. u 20:30 - pre 259 meseci
Pa koristi __repr__ za liste, a ne __str__, ili napravi novu klasu MojaLista, koja će koristiti str() za ispis, umesto repr().


Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

[es] :: Python :: Python petlja

[ Pregleda: 3277 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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