2016-06-15 7 views
0

Ich bin ein Spiel von Pong in Pygame schreiben, aber wenn ich versuche, es zu laufen, bekomme ich diesen Fehler, der besagt:Python: Nicht alle während Zeichenfolge Bildung umgewandelt Argumente

TypeError: not all arguments converted during string formatting 

Ich bin noch neu in Python und verstehe nicht ganz, was passiert ist. Code von Problem unter:

def displayScore(player1_score, player2_score): 
    resultSurf = BasicFont.render('Player 1 Score = %s' %(player1_score), True, white) 
    resultRect = resultSurf.get_rect() 
    resultRect.topleft = (125, 25) 
    gameDisplay.blit(resultSurf, resultRect) 

    resultSurf = BasicFont.render('Player 2 Score = %s' %(player2_score), True, white) 
    resultRect = resultSurf.get_rect() 
    resultRect.topleft = (375, 25) 
    gameDisplay.blit(resultSurf, resultRect) 
+0

Es ist in der Regel eine vollständige stacktrace (einen Stapel von Quelldatei angibt/Linien/Funktionen/Ausdrücke), wo etwas schief gelaufen ist, wenn ein solcher Fehler auftritt, vielleicht gut, um es auch in die Frage zu stellen. Für das, was ich sehe, sieht es so aus, als ob Format-Slots und Argumente nicht übereinstimmen, aber besser, einfach den Stack-Trace zu haben. Ah, ist player1_score eine Zeichenfolge oder eine Zahl? – Dilettant

+2

Ist es möglich, dass 'player1_score' oder' player_2score' Tupel sind? – TheLazyScripter

+0

''Player 1 Score =% s'% (player1_score)' ist ein Fehler, der darauf wartet, zu passieren. Entweder Sie übergeben ** einen ** Wert und Sie setzen die Klammern nicht, oder Sie übergeben ein ** Tupel ** und Sie müssen mindestens ein Komma haben: '% (player1_score,)'. Parenthesizes alleine machen kein Tupel, also ist es irreführend, sie dort zu platzieren. – spectras

Antwort

1

Da Sie sind „neu“:

nicht alle während Zeichenfolge konvertiert Argumente Formatierung

zeigt an, dass nicht genügend oder zu viele Variablen sind vorbei die String-Substitution. helfen Sie explizit könnten unter Verwendung von str() auch wird, um Ihre eigene Antwort zu bekommen, wie die Ausgabe des Textes andeuten, was die Noten wirklich geben sind:

def displayScore(player1_score, player2_score): 
    resultSurf = BasicFont.render('Player 1 Score = %s' % str(player1_score), True, white) 
    resultRect = resultSurf.get_rect() 
    resultRect.topleft = (125, 25) 
    gameDisplay.blit(resultSurf, resultRect) 

    resultSurf = BasicFont.render('Player 2 Score = %s' % str(player2_score), True, white) 
    resultRect = resultSurf.get_rect() 
    resultRect.topleft = (375, 25) 
    gameDisplay.blit(resultSurf, resultRect)