Python és a ciklusok

Kicsit furcsán működnek a Pythonban a ciklusok. Vagy valami idegen filozófia szerint. :) Konkrétan a

while

-ra gondolok. Van egy mxn-es mátrixom, aminek az elemeit szeretném elérni. egyesével mindegyiket. Az alap elgondolás a következő volt:


while x<n:
 while y<m:
  print M[m,n]
  y+=1
 x+=1

Eredmény? Megkaptam az első sort. Grrrr. El is pöcsöltem a problémával. Amit felfedeztem: A belső ciklus csak egyszer fut le, utána már csak a külsővel foglalkozik. Én (lehet, kicsit hülye a logikám) azt vártam volna, hogy a külső ciklus törzsében lévő belső ciklus a törzs minden lefutásakor maga is lefut. Helyette ami működött:


def y(x):
 t=0
 while t<m:
  print M[x,t]
  t+=1
while x<m:
 y(x)
 x+=1

Kicsit furcsa. A csupasz ciklust, mondhatni, megkeféli a másik. :) Amit nem értek: az első miért nem működik?

Hozzászólások

Miért nem működik az első? Mert nem nullázod az y változót.

KisKresz

:) Így már én is jártam, csak C-vel. Nekem nem lehetett printelni sajnos (il nem volt sok értelme mert bődület sok "random" adat volt a feldolgozott tömbben), csak az tűnt fel, hogy a kapott xxxx*xxxx-es tömbön piszok hamar végigszaladt, iszonyú pontatlanúl, az a fizikai eredmény jött ki, aminek ki kellett cask kb úgy hogy x=80+-50. És ennyi kelett egy X=0 :D Szóval nem vagy egyedül.

Egyébként meg:

for i in range(n):
  for j in range(m):
    print M[i][j]