Kezdő Python-os vagyok és elakadtam. Hogy tudnék tovább haladni ?
IndexError: list assignment index out of range ezt a hibakódot kapom vissza egy while ciklusban. Lentebb linkeltem a teljes kódomat.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Használsz egy while ciklust, de rosszul. Mi lehet a gond?
Hogy néz ki a te logikád?
- amíg 'true' addig fut a while.
Létre is hoztál egy végtelen ciklust, ami szarvashiba. Miért?
hogy kéne kinézzen a logikád?
megoldás:
- amíg az inputod nem 0, addig..
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Bréket nem használhatsz.
Egy feltételhez kötsz egy futási intervallumot. Erre szolgál a while. While-t kell használnod. Olvasol esetleg valami programozó könyvet mellé? Ez teljesen nyelv független.
(amúgy a linken semmi sem szerepel)
a Breaket miért nem használhatom? az pont azt a célt szolgálja hogy egy ciklust megszakítson.
Kodom:
# Írj egy Python programot, amely a felhasználótól pozitív számokat kér be mindaddig, amíg a
# felhasználó nullát nem ad be! A program az összes értéket tárolja egy listában, majd írja ki a
# képernyőre a lista elemeit fordított sorrendben!
szam=1
i = 0
lista = []
while szam != 0:
szam = int(input("Kérek egy egész számot: "))
if szam != 0:
print ("Probáld újra!")
lista[i] = szam
i = i+1
else:
print (lista.reverse())
Itt a másik :
i = 0
lista = []
while True:
szam = int(input("Kérek egy egész számot: "))
if szam != 0:
print ("Probáld újra!")
lista[i] = szam
i = i+1
else:
print (lista.reverse())
break
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Miért vizsgálod a while feltételeként, és egy külön if-el a nullát?
Nem használhatsz brake-t, mert ahol ezt használod ott kivétel nélkül mindig van egy szebb és jobb megoldás. Jelen esetben teljesen rosszul használod a programozási "építőkockákat", mint pl a while-t. A gondolataidat tedd rendbe, és írd le egy papírra sorról sorra, hogy mit csinál ez a kódod, és mit várnál el. Hidd el, meg fogod érteni. Bár ehhez az kéne, hogy olvasgass egy programozó oktatás könyvet, mert ha nem érted az alapokat, nagyon nehéz építkezni alapanyag nélkül.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
egy kis segítség, bár erre neked kellene rájönnöd, és nem nekünk leírni
iterátor = 0
tömb = []
inputod = szám típus default érték
amíg az input nem egyenlő nullával, addig:
írdki: Próbáld újra
tömb eleme legyen az aktuális input
iterátort növeljük 1-el
írdki: Vége
írdki: tömb elemei fordított sorrendben
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Nem tudom miből tanulsz, de felejtsd el gyorsan. Meg az eddigi válaszoló válaszait is.
A lista nevű tömböd végig 0 elemű marad, mivel nem adsz hozzá egyetlen elemet sem. Arra a lista.append(szam) való. Az i változóra semmi szükség.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
9 miért kéne elfelejteni? Van esetleg valami indoklásod?
Miért lett lepontozva a 3? Tegye fel a kezét, akinél engednek production kódban break-et használni. Voltam pár cégnél, és mindig furcsán néztek code reviewn...
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!