Making a string out of a string and an integer in

2019-01-01 16:15发布

问题:

This question already has an answer here:

  • How can I concatenate str and int objects? 3 answers

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

回答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.



回答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...

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

or the new .format string method

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


回答3:

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

try str(num) instead



回答4:

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\'


回答5:

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


回答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.