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