157

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:

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

How can I add strings to integers?

0

9 Answers 9

187

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
Sign up to request clarification or add additional context in comments.

Comments

86

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

5 Comments

I don't think the str(c) is necessary at all for the program (though what you say about having to assign the result of the function is correct)
It's not necessary I agree, but it is the reason why it doesn't work as is.
You can leave it in, it doesn't cause an problems (just as it doesn't really do anything :)
If you remove it, you must change the following line to print "a + b as integers: ", c, though.
@Levon I +1d for you "alternate" approach
23

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

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

Comments

6
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.

Comments

3

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.

Comments

2

You can convert int into str using string function:

user = "mohan"

line = str(50)

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

1 Comment

This has already been answered by others. Your answer doesn't add anything.
1

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/

Comments

1

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.

Comments

1

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)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.