kann mir jemand bei diesem Fehler weiterfehelfen :
Code: Alles auswählen
a=asteroiden_liste[c][3]
TypeError: unsubscriptable object
Code: Alles auswählen
(<Surface(90x96x8 SW)>, 545, -2202, 4, 90)
wo ist da das problem ?
thx 4 replys
Code: Alles auswählen
a=asteroiden_liste[c][3]
TypeError: unsubscriptable object
Code: Alles auswählen
(<Surface(90x96x8 SW)>, 545, -2202, 4, 90)
Code: Alles auswählen
if asteroiden_liste[k][2]>0:
TypeError: unsubscriptable object
Code: Alles auswählen
[(<Surface(60x64x8 SW)>, 488, 376, 4, 60), (<Surface(40x43x8 SW)>, 234, 500, 5, 40)]
Code: Alles auswählen
for b in range(level+1):
global zahl
global zahl1
zahl1=randint(3,9)
zahl=zahl1*10
speed=randint(4,7)
asteroid_spawn_x=randint(0,800-zahl)
asteroid_spawn_y=0-zahl
asteroid_bild,asteroid_x,asteroid_y=pygame.image.load('bilder/asteroid'+str(zahl)+'.gif'),asteroid_spawn_x,asteroid_spawn_y
global asteroid_daten
asteroid_daten=asteroid_bild,asteroid_x,asteroid_y,speed,zahl
global asteroiden_liste
asteroiden_liste.append(asteroid_daten)
screen.blit(asteroid_bild,[asteroid_spawn_x,asteroid_spawn_y])
while 1:
for c in range(level+1):
a=asteroiden_liste[c][3]
b=asteroiden_liste[c][2]
asteroiden_liste[c]=asteroiden_liste[c][0],asteroiden_liste[c][1],a+b,asteroiden_liste[c][3],asteroiden_liste[c][4]
if asteroiden_liste[c][2]>600:
asteroiden_liste[c]=asteroiden_liste[c][0],asteroiden_liste[c][1],asteroiden_liste[c][2]-2500,asteroiden_liste[c][3],asteroiden_liste[c][4]
asteroids_out=asteroids_out+1
a=asteroiden_liste[c][3]
TypeError: unsubscriptable object
Code: Alles auswählen
for c in range(level+1):
a=asteroiden_liste[c][3]
ich versteh zwar net was du meinst aber an asteroiden_liste[c][3] ist definitiv nix falsches weil mein ganzes programm so oder so ähnlich aufgebaut istknekke hat geschrieben:Ich bin ja nun wahrlich kein Fachmann, aber für mich sieht das so aus, als wäre c eine Liste in Asteroiden_liste, und a somit das 4. Element in dieser Liste - die es ja gar nicht gibt... oder??Code: Alles auswählen
for c in range(level+1): a=asteroiden_liste[c][3]
Das das keine Liste ist, sondern ein Surface Objekt. Was ist bei dir 4 in dem Beispiel?rady hat geschrieben:Hab mir vorher den Inhalt von asteroiden_liste[c] printen lassen:sprich da steht a=4Code: Alles auswählen
(<Surface(90x96x8 SW)>, 545, -2202, 4, 90)
wo ist da das problem ?
Jetzt erst rechtrady hat geschrieben:bitte keine kommentare zu meiner chaotischen art programme zu schreiben ^^ das wird am ende wenn alles funzt verfeinert
die 4 von (<Surface(90x96x8 SW)>, 545, -2202, 4, 90) ist asteroiden_liste[c][3]Leonidas hat geschrieben:Das das keine Liste ist, sondern ein Surface Objekt. Was ist bei dir 4 in dem Beispiel?rady hat geschrieben:Hab mir vorher den Inhalt von asteroiden_liste[c] printen lassen:sprich da steht a=4Code: Alles auswählen
(<Surface(90x96x8 SW)>, 545, -2202, 4, 90)
wo ist da das problem ?
ja das habe ich weggelassen weil es einfach asteroiden_liste=[] ist.CM hat geschrieben: Zu Deinem Problem: Ich sehe immer noch nicht wo diese Liste angelegt wird.
Code: Alles auswählen
asteroid_daten=asteroid_bild,asteroid_x,asteroid_y,speed,zahl
asteroiden_liste.append(asteroid_daten)
Code: Alles auswählen
if schuesse==1:
if asteroiden_liste[k][2]>0:
if schuesse_liste[0]+5>asteroiden_liste[k][1] and schuesse_liste[0]<asteroiden_liste[k][1]+asteroiden_liste[k][4]:
if schuesse_liste[1]+5>asteroiden_liste[k][2] and schuesse_liste[1]<asteroiden_liste[k][2]+asteroiden_liste[k][4]:
asteroiden_liste=asteroiden_liste[k][0],asteroiden_liste[k][1],asteroiden_liste[k][2]-2500,asteroiden_liste[k][3],asteroiden_liste[k][4]
asteroids_out=asteroids_out+1
Das ist auch das Grundkonzept von Extreme Programming, würde ich auch gerne machen.. wenn ich genug Unittests hätte um prüfen zu können ob die neue Version genauso funktioniert.CM hat geschrieben:N.B.: Re-Factoring ist ja keine Schande, sondern zeugt davon, daß man sich über seinen Code Gedanken macht. Ein guter Bekannter von mir, "richtiger" Programmierer, schmeißt gelgentlich tausende Zeilen Code weg und schreibt sie neu. Mir ist es schwer gefallen davon zu lernen - aber der Mann hat recht, es bringt manchmal tatsächlich was.