假设
p1="python"
p2="script"
r=0.242424
print(p1+" "+p2+" "+r) #wrong or error in python
print(p1+" "+p2+" "+str(r)) #correct
为什么我必须在Python中显式地将float转换为字符串,但其他语言如Java会隐式转换它?
答案 0 :(得分:3)
你没有。您只需要在连接时显式转换它。 print()
将使用空格自行分隔参数,将每个参数转换为字符串:
print(p1, p2, r)
所有非关键字参数都转换为
str()
之类的字符串并写入流中,由 sep 分隔,然后是 end 。
sep 默认为' '
字符串。
您通常使用string formatting将值插入字符串:
print("Running a {} {} to show the value of r={:.6f}".format(p1, p2, r))
否则,尝试将字符串与其他值连接起来不隐式转换值;这与Zen of Python:
相反明确比隐含更好。
答案 1 :(得分:0)
如果要将各种数据类型连接到字符串中,则使用+
或str.join
方法连接将要求它们在之前成为字符串。
正如Martijn所示,它不需要打印,但这可能会让人感到困惑,因为默认情况下打印包括换行符和用于分隔由正在打印的逗号分隔的元素的空格。
如果你想隐式地将它们转换为字符串,我推荐string.format
方法:
>>> '{0} {1} {2}'.format(p1, p2, r)
'python script 0.242424'
这是格式化文本非常有用和高效的方法,不必担心类型,只要你不介意获取它们的默认字符串表示。