2017-03-08 8 views
0

Ich habe mehrere Variablen, PlayerHealth und OgreHealth."TypeError: 'int' Objekt ist nicht iterierbar" mit mehreren Variablen

Ich benutze eine definierte Funktion, um sie zu ändern, nach einigen anderen Dingen.

Nützliche Code:

def attack(enemyHealth, playerHealth): 
while saveKeyp or place == 'b': 
    [ogreHealth, playerHealth] = attack(ogreHealth, playerHealth) 

Was mache ich hier falsch?

+3

Wenn "attack" eine Ganzzahl zurückgibt, die Sie nicht in mehrere Werte entpacken können. –

+2

Was macht 'attack'? Was gibt es zurück? –

+0

Die '[...]' um Ihre Variablenliste sind nicht notwendig, obwohl sie die Bedeutung nicht ändern (viel). 'x, y = foo (stuff)' ist ausreichend, solange 'foo()' 2 (oder mehr) Werte in einem Tupel zurückgibt. – twalberg

Antwort

0

mit der Vermutung von Jean-François Fabre gehen (da Sie nicht den Code für attack gezeigt haben), es sieht aus wie die attack Funktion einen Wert zurückgegeben wird nur:

# guessing attack's implementation 
    return a_health_value 

Da nur ein Gesundheitswert wird zurückgegeben Python beschwert sich, dass es das Objekt nicht durchlaufen kann, um zwei Gesundheitswerte zu erhalten. Was sollten Sie stattdessen tun:

return calculated_enemy_health, calculated_player_health 

durch ein Tupel von zwei Werten zurückkehrt, wird Python der Lage sein, durch die Tupel iterieren und diese Werte ogreHealth und playerHealth zuweisen.

+0

Das hat funktioniert, in meinem Code gab ich die zwei Werte als separate Dinge zurück, deshalb hat es nicht funktioniert! Vielen Dank! –

Verwandte Themen