Making a string out of a string and an integer in Python

I get this error when trying to take an integer and prepend “b” to it, converting it into a string:

  File "program.py", line 19, in getname
    name = "b" + num
TypeError: Can't convert 'int' object to str implicitly

That’s related to this function:

num = random.randint(1,25)
name = "b" + num

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

name = 'b' + str(num)

or

name = 'b%s' % num

as S.Lott notes, the mingle operator ‘%’ is deprecated for Python 3 and up. And I stole the name “mingle” from INTERCAL but that’s how I talk about it and wanted to see it in print at least once before – like the dodo – it vanishes from the face of the earth.

Method 2

Python won’t automatically convert types in the way that languages such as JavaScript or PHP do.

You have to convert it to a string, or use a formatting method.

name="b"+str(num)

or printf style formatting (this has been deprecated in python3)

name="b%s" % (num,)

or the new .format string method

name="b{0}".format(num)

Method 3

Python 3.6 has f-strings where you can directly put the variable names without the need to use format:

>>> num=12
>>> f"b{num}"
'b12'

Method 4

Yeah, python doesn’t having implicit int to string conversions.

try str(num) instead

Method 5

name = "b{0:d}".format( num )

Method 6

Correct answers have already been given but I want to chime in and say that you should always use str(var) every time you intend to use var as a string, regardless of whether you know it is a string or not.

Better safe than sorry.


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

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x