Making a string out of a string and an integer in Python
Question:
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:
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.
Yeah, python doesn’t having implicit int to string conversions.
try str(num)
instead
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)
name = "b{0:d}".format( num )
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.
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'
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
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.
Yeah, python doesn’t having implicit int to string conversions.
try str(num)
instead
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)
name = "b{0:d}".format( num )
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.
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'