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

PythonStringPrintingInteger

Python Problem Overview


I have this python program that adds strings to integers:

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

I get this error:

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

How can I add strings to integers?

Python Solutions


Solution 1 - Python

There are two ways to fix the problem which is caused by the last print statement.

You can assign the result of the str(c) call to c as correctly shown by @jamylak and then concatenate all of the strings, or you can replace the last print simply with this:

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

in which case

str(c)

isn't necessary and can be deleted.

Output of sample run:

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

with:

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

Solution 2 - Python

str(c) returns a new string representation of c, and does not mutate c itself.

c = str(c) 

is probably what you are looking for

Solution 3 - Python

If you want to concatenate int or floats to a string you must use this:

i = 123
a = "foobar"
s = a + str(i)

Solution 4 - Python

c = a + b 
str(c)

Actually, in this last line you are not changing the type of the variable c. If you do

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

it should work.

Solution 5 - Python

Apart from other answers, one could also use format()

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

For example -

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

will result in output - Time elapsed - 13 hours and 32 minutes

Check out docs for more information.

Solution 6 - Python

You can convert int into str using string function:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")

Solution 7 - Python

The easiest and least confusing solution:

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

I found this on http://freecodeszone.blogspot.com/

Solution 8 - Python

I also had the error message "TypeError: cannot concatenate 'str' and 'int' objects". It turns out that I only just forgot to add str() around a variable when printing it. Here is my 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()

I know, it was a stupid mistake but for beginners who are very new to python such as myself, it happens.

Solution 9 - Python

This is what i have done to get rid of this error separating variable with "," helped me.

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

Here is the output

Value is -113

(program exited with code: 0)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionplahsticView Question on Stackoverflow
Solution 1 - PythonLevonView Answer on Stackoverflow
Solution 2 - PythonjamylakView Answer on Stackoverflow
Solution 3 - PythonThargorView Answer on Stackoverflow
Solution 4 - Pythonuser2919374View Answer on Stackoverflow
Solution 5 - PythonAnanthView Answer on Stackoverflow
Solution 6 - PythonCmpmohan MohanView Answer on Stackoverflow
Solution 7 - PythonShekharView Answer on Stackoverflow
Solution 8 - PythondjmurpsView Answer on Stackoverflow
Solution 9 - PythonMansur Ul HasanView Answer on Stackoverflow