在Learn Python the Hard Way
的示例5中,我遇到了问题。我继续将英寸转换为厘米,将磅转换为千克。我遇到了一个错误,但格式化程序和语法错误只读not all arguments converted during string formatting
。我的英寸到厘米和磅到公斤是好的,但它没有显示字符串中的变量。它看起来像这样:
print "%s is", cm, "tall in centimeters." % name
我很难发布变量,因为它希望以某种方式发布。变量不是问题我很困惑为什么我的变量没有使用格式化程序打印。我甚至尝试使用%r
代替%s
,但它仍然不会打印名称变量。有人能告诉我我做错了吗?
答案 0 :(得分:4)
使用format
:
print "{0} is {1} tall in centimeters.".format(name, cm)
答案 1 :(得分:2)
您的字符串格式正在对此进行操作:
"tall in centimeters." % name
由于在上面的字符串中找不到%s
,解释器失败。
一种做你想做的事的方法:
print "%s is %s tall in centimeters." % (name, cm)
或
print "%s is %.2f tall in centimeters." % (name, cm)
如果您想在2位数字上显示cm
。
答案 2 :(得分:2)
您可以通过两种常见方式进行操作 -
使用旧方式(%
):
print "%s is %s tall in centimeters." % (name, cm)
参考文献:https://docs.python.org/2/library/stdtypes.html#string-formatting
使用新方式(format
)
print "{} is {} tall in centimeters.".format(name, cm)
参考文献:https://docs.python.org/3/library/string.html#string-formatting
请注意,使用format
是一种很好的做法,因为它是新的方法。您可以在此网站上详细了解这些内容:https://pyformat.info/
答案 3 :(得分:1)
如果你想保留你的语法:
print "%s is" %name, cm, "tall in centimeters."
第一个打印部分中引用的字符串需要立即跟进。