How can I concatenate a string and a number in Python?

Question:

I was trying to concatenate a string and a number in Python. It gave me an error when I tried this:

"abc" + 9

The error is:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    "abc" + 9
TypeError: cannot concatenate 'str' and 'int' objects

Why am I not able to do this?

How can I concatenate a string and a number in Python?

Asked By: NOOB

||

Answers:

Since Python is a strongly typed language, concatenating a string and an integer, as you may do in Perl, makes no sense, because there’s no defined way to "add" strings and numbers to each other.

Explicit is better than implicit.

…says "The Zen of Python", so you have to concatenate two string objects. You can do this by creating a string from the integer using the built-in str() function:

>>> "abc" + str(9)
'abc9'

Alternatively, use Python’s string formatting operations:

>>> 'abc%d' % 9
'abc9'

Perhaps better still, use str.format():

>>> 'abc{0}'.format(9)
'abc9'

The Zen also says:

There should be one– and preferably only one –obvious way to do it.

Which is why I’ve given three options.

Answered By: johnsyweb

You have to convert the int into a string:

"abc" + str(9)
Answered By: senderle

Do it like this:

"abc%s" % 9
#or
"abc" + str(9)
Answered By: guettli

Python is strongly typed. There are no implicit type conversions.

You have to do one of these:

"asd%d" % 9
"asd" + str(9)
Answered By: Jochen Ritzel

If it worked the way you expected it to (resulting in "abc9"), what would "9" + 9 deliver? 18 or "99"?

To remove this ambiguity, you are required to make explicit what you want to convert in this case:

"abc" + str(9)
Answered By: vstrien

Either something like this:

"abc" + str(9)

or

"abs{0}".format(9)

or

"abs%d" % (9,)
Answered By: xubuntix

You would have to convert the int into a string.

# This program calculates a workers gross pay

hours = float(raw_input("Enter hours worked: n"))

rate = float(raw_input("Enter your hourly rate of pay: n"))

gross = hours * rate

print "Your gross pay for working " +str(hours)+ " at a rate of " + str(rate) + " hourly is $"  + str(gross)
Answered By: Georgio McCullough
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.