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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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
Method 2
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
Method 3
If you want to concatenate int or floats to a string you must use this:
i = 123 a = "foobar" s = a + str(i)
Method 4
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.
Method 5
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.
Method 6
You can convert int into str using string function:
user = "mohan" line = str(50) print(user + "typed" + line + "lines")
Method 7
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/
Method 8
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.
Method 9
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)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0