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整数のフォーマット コードです。 %ffloat の形式コードです。

%sオブジェクトの を出力しstr()ます (What you see when you print(object))。

%rオブジェクトの を出力しrepr()ます ( print(repr(object)).

float %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)

フォーマット文字列指定子に関するテキストはたくさんあります。グーグルで指定子のリストを取得できます。私が注意するのを忘れた1つのこと:

これを試してみると:

print "First is: %s" % (first)

最初に float 値を文字列に変換します。だからそれもうまくいくでしょう。

于 2013-03-05T03:25:54.043 に答える