Python 2.7: %d, %s 和 float()
我正在通过《艰难学Python》这本书自学编程,但在使用 %d、%s 和 %r 来显示浮点数时遇到了困难。请问怎么正确地用格式字符传递浮点数呢?我首先尝试了 %d,但这会把我的结果显示成整数……我用 %r 有一些成功,但我以为这个通常是用来调试的?我发现,在 Python 2.x 中进行除法时,必须手动把分母转换成浮点数,这样才能正常工作。
示例代码:
def divide (a, b):
print "WE DIVIDING %r and %r NOW" % (a, b)
return a / float(b)
print "Input first number:"
first = float(raw_input("> "))
print "OK, now input second number:"
second = float(raw_input("> "))
ans = divide(first, second)
print "DONE: %r DIVIDED BY %r EQUALS %r, SWEET MATH BRO!" % (first, second, ans)
2 个回答
28
请查看字符串格式化操作:
%d
是用来表示整数的格式代码。%f
是用来表示浮点数的格式代码。
%s
会打印出一个对象的字符串形式(也就是你在用 print(object)
打印时看到的内容)。
%r
会打印出一个对象的“官方”字符串形式(也就是你用 print(repr(object))
打印时看到的内容)。
对于浮点数来说,使用 %s、%r 和 %f 打印出来的值是一样的,但对于其他对象来说情况可能就不一样了。格式说明符的其他部分也有不同的工作方式:
>>> print('%10.2s' % 1.123) # print as string, truncate to 2 characters in a 10-place field.
1.
>>> print('%10.2f' % 1.123) # print as float, round to 2 decimal places in a 10-place field.
1.12
13
试试下面这个:
print "First is: %f" % (first)
print "Second is: %f" % (second)
我不太确定答案是什么。不过除此之外,这个会是:
print "DONE: %f DIVIDED BY %f EQUALS %f, SWEET MATH BRO!" % (first, second, ans)
关于格式字符串说明符有很多内容。你可以在网上搜索一下,找到一份说明符的列表。我忘记提一件事:
如果你试试这个:
print "First is: %s" % (first)
它会把第一个浮点数值转换成字符串。所以这样也可以用。