17

我正在尝试通过“以艰难的方式学习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)
4

2 回答 2

26

请参阅字符串格式化操作

%d是整数的格式代码。 %f是浮点数的格式代码。

%s打印str()一个对象的 (当你看到什么print(object))。

%r打印repr()对象的 (当您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
于 2013-03-05T03:44:03.497 回答
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)

它将第一个浮点值转换为字符串。所以这也可以。

于 2013-03-05T03:25:54.043 回答