在python中将数字转换为字符串
我试图将“funct”的结果表示为一个字符串,但我尝试过的任何东西都不起作用在python中将数字转换为字符串,python,string,Python,String,我试图将“funct”的结果表示为一个字符串,但我尝试过的任何东西都不起作用 def funct(y): rad = [2+y] return rad z = 1; a = funct(z); print a print str(a) b = str(a); print b c = repr(a); print c 以下是我的输出: [3] [3] [3] [3] 我错过了什么?谢谢 编辑:我的意思是,我试图将其打印为一个没有括号的字符串。忘了把它包括进去。你可能不希望
def funct(y):
rad = [2+y]
return rad
z = 1;
a = funct(z);
print a
print str(a)
b = str(a);
print b
c = repr(a);
print c
以下是我的输出:
[3]
[3]
[3]
[3]
我错过了什么?谢谢
编辑:我的意思是,我试图将其打印为一个没有括号的字符串。忘了把它包括进去。你可能不希望
rad
成为一个列表
尝试使用()
而不是[]
:
rad = (2+y)
您的功能将按如下方式工作:
def funct(y):
rad = (2 + y)
return rad
z = 1;
a = funct(z);
print a
#=> "3"
根据问题的标题,您不想更改
funct
本身,也不想将funct
的输出转换为字符串。如果要将数字更改为字符串,则需要更改funct
输出的列表中的值。问题是您正在将列表本身的repr转换为字符串,但没有在列表中强制转换值:
>>> repr([5])
'[5]'
>>> repr(["5"])
"['5']"
>>> repr(list(map(str, [5]))) # say `funct(3)` for example
"['5']"
>>> repr(list(str(i) for i in [5]))
"['5']"
实际上,您希望在列表中强制转换值:
>>> repr([5])
'[5]'
>>> repr(["5"])
"['5']"
>>> repr(list(map(str, [5]))) # say `funct(3)` for example
"['5']"
>>> repr(list(str(i) for i in [5]))
"['5']"
现在,如果您真的只想将funct
的输出转换为字符串,那么您已经在这样做了。Python只是不在列表的字符串表示形式周围打印引号,因为它正在打印它
>>> repr([5]); print([5])
'[5]'
[5]
你想要什么结果<代码>3
[“3”]
?您的第一个print
隐式调用str
,第二个和第三个print
执行的操作完全相同。第四个print
使用repr
,这恰好相当于带有整数的列表的str
。如果您只想funct
返回2+4
,请使用rad=(2+y)
或只使用rad=2+y
,因为[2+y]
创建了一个包含一个元素的列表。str(a)
是一个字符串,有什么问题吗?只需使用切片表示法访问它:即a[0]
生成“3”
这是一个完美的复制品。谢谢