it-swarm.com.de

Python: TypeError: 'str' und 'int' Objekte können nicht verkettet werden

Ich habe dieses Python-Programm, das Ganzzahlen Strings hinzufügt:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b
a = int(a)
b = int(b)
c = a + b
str(c)
print "a + b as integers: " + c

Ich erhalte diesen Fehler:

Python: TypeError: cannot concatenate 'str' and 'int' objects

Wie kann ich Ganzzahlen Strings hinzufügen?

130
user1581649

Es gibt zwei Möglichkeiten, das Problem zu beheben, das durch die letzte print-Anweisung verursacht wird. 

Sie können das Ergebnis des str(c)-Aufrufs c wie von @jamylak richtig angezeigt zuweisen und dann alle Zeichenfolgen verketten. Alternativ können Sie die letzte print einfach durch Folgendes ersetzen:

print "a + b as integers: ", c  # note the comma here

in welchem ​​Fall 

str(c)

ist nicht notwendig und kann gelöscht werden.

Ausgabe des Probelaufs:

Enter a: 3
Enter b: 7
a + b as strings:  37
a + b as integers:  10

mit:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b  # + everywhere is ok since all are strings
a = int(a)
b = int(b)
c = a + b
print "a + b as integers: ", c
160
Levon

str(c) gibt eine new string-Darstellung von c zurück und mutiert c nicht selbst.

c = str(c) 

ist wahrscheinlich was Sie suchen

71
jamylak

Wenn Sie int oder floats zu einer Zeichenfolge verketten möchten, müssen Sie Folgendes verwenden:

i = 123
a = "foobar"
s = a + str(i)
21
Thargor
c = a + b 
str(c)

Eigentlich ändern Sie in dieser letzten Zeile nicht den Typ der Variablen c. Wenn Sie tun

c_str=str(c)
print "a + b as integers: " + c_str

es sollte funktionieren.

5
user2919374

Die einfachste und am wenigsten verwirrende Lösung:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: %s" % a  + b
a = int(a)
b = int(b)
c = a + b
print "a + b as integers: %d" % c

Ich habe dies auf http://freecodeszone.blogspot.com/ gefunden.

1
Shekhar

Neben anderen Antworten könnte man auch format() verwenden

print("a + b as integers: {}".format(c))

Beispielsweise -

hours = 13
minutes = 32
print("Time elapsed - {} hours and {} minutes".format(hours, minutes))

führt zur Ausgabe - Time elapsed - 13 hours and 32 minutes

1

Ich hatte auch die Fehlermeldung "TypeError: Objekte" str "und" int "können nicht verkettet werden. Es stellt sich heraus, dass ich gerade vergessen habe, str () um eine Variable hinzuzufügen, wenn ich sie drucke. Hier ist mein Code:

def main():
	rolling = True; import random
	while rolling:
		roll = input("ENTER = roll; Q = quit ")
		if roll.lower() != 'q':
			num = (random.randint(1,6))
			print("----------------------"); print("you rolled " + str(num))
		else:
			rolling = False
main()

Ich weiß, es war ein dummer Fehler, aber für Anfänger, die noch nicht mit Python vertraut sind wie ich, passiert es.

0
djmurps

Sie können int in str konvertieren, indem Sie die Funktion string verwenden:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
0
Cmpmohan Mohan

Dies ist, was ich getan habe, um diesen Fehler zu beseitigen, der die Variable mit "," trennte, half mir.

# Applying BODMAS 
arg3 = int((2 + 3) * 45 / - 2)
arg4 = "Value "
print arg4, "is", arg3

Hier ist die Ausgabe

Wert ist -113

(Programm mit Code beendet: 0)

0
Mansur Ali