2017-05-16 3 views
1

Ich versuche, die Zeichenfolge und Zahl mit String-Formatierung zu verketten, aber ich erhalte eine FehlermeldungString Formatierung mit Verkettung

"TypeError: not all arguments converted during string formatting"

Dies ist mein Code

i = 0 
while (i<= 10): 
    print("insert into Member" + "(Mem_ID)") 
    print("values" + "(" + "Mem%d" + ")" %(i)) 
i = i+1 
+0

Versuch: 'print ("Werte (Mem% d)" % (i))' .... no '+' – depperm

+2

Dieser antwortet nicht Ihre Frage, aber Sie sollten Python nicht die verwenden integrierte String-Formatierung zum Erstellen von SQL-Anweisungen sowieso. Jede Bibliothek, die Sie zum Ausführen der SQL verwenden, wird über eine Funktion verfügen, mit der Sie Variablen ohne die Gefahr von SQL-Injection-Angriffen einfügen können. – Kevin

+0

versuchen 'print (" Werte (Mem% d) "% (i))' – kuro

Antwort

4

Das Problem ist, wie Sie% verwenden

Die %d, die ersetzt wird, sollte %(var) neben dem Angebot haben.

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem%d"%(i) + ")") 
    i += 1 

im Auge behalten sollten Sie .format() als die aktuelle Methode verwendet werden.

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem{}".format(i) + ")") 
    i += 1 

Auch um klar zu sein, einige Ihrer Zitate sind nicht erforderlich. Sie können dies auch verwenden.

i = 0 
while (i<= 10): 
    print("insert into Member (Mem_ID)") 
    print("values (Mem{})".format(i)) 
    i += 1 
2

Sie dieses viel mehr tun können simplier, wenn Sie die int in eine Zeichenfolge wie folgt umwandeln:

i = 0 
while (i<= 10): 
    print("insert into Member " + "(Mem_ID)") 
    print("values " + "(" + "Mem" + str(i) + ")") 
    i = i+1 
+1

Sie haben das gleiche Einrückungsproblem als OP – kuro

+0

Stellen Sie sicher, dass Sie bei der Beantwortung von Fragen die richtige Einrückung verwenden. –

+0

@kuro mein riesiges schlecht, vielen Dank! –