web-dev-qa-db-ja.com

Python、すべての浮動小数点を出力の小数点以下2桁に出力します

4つの異なるfloatを小数点以下2桁まで出力する必要があります。

これは私が持っているものです:

print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'

これは非常に汚れており、見た目も悪いです。 '%.2f'を出力するフロートを作成する方法はありますか?

注:Python 2.6を使用します。

59
Omar

少なくとも次のようにクリーンアップします:

print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4)
73
Frank Krueger

値を見栄えの良い文字列に変換するだけの場合は、次の手順を実行します。

twodecimals = ["%.2f" % v for v in vars]

または、質問にあるような単位を印刷することもできます。

vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated

print delimiter.join(["%.2f %s" % (v,u) for v,u in Zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'

2番目の方法では、必要に応じて区切り文字(タブ、スペース、改行など)を簡単に変更できます。区切り文字は、ハードコーディングされる代わりに、関数の引数にすることもできます。

編集:「名前=値」構文を使用するには、リスト内包表記内の要素ごとの操作を変更します。

print delimiter.join(["%s = %.2f" % (u,v) for v,u in Zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'
25
awesomo

フォーマット文字列の構文。

https://docs.python.org/3/library/string.html#formatstrings

from math import pi
var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4
'{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4)

出力は次のようになります。

'3.14, kg=6.28, lb=9.42, gal=12.57'
22
Chikipowpow

読みやすさを探しているなら、これがそのコードだと思います:

print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
    'kg': var1,
    'lb': var2,
    'gal': var3,
    'l': var4,
}
7
Cacilhas

ラウンド関数を発見しました-Python 2.7にありますが、2.6についてはわかりません。引数として浮動小数点数とdpsの数を使用するため、round(22.55555、2)の結果は22.56になります。

5
Rioka

印刷操作で浮動小数点数を自動的に変更して小数点以下2桁のみを表示したい場合は、「印刷」を置き換える関数の作成を検討してください。例えば:

def fp(*args):  # fp means 'floating print'
    tmps = []
    for arg in args:
        if type(arg) is float: arg = round(arg, 2)  # transform only floats
        tmps.append(str(arg))
    print(" ".join(tmps)

Printの代わりにfp()を使用します...

fp("PI is", 3.14159) ... ...の代わりに... print "PI is", 3.14159

2
Richard_M.

直接あなたがそれを書きたい方法ではありません。 Pythonの設計方針の1つは、「明示的は暗黙的よりも優れている」です(import thisを参照)。これは、出力フォーマットが何らかのグローバルなフォーマット設定などに依存するのではなく、必要なものを記述する方が良いことを意味します。もちろん、見栄えを良くするためにコードを別の方法でフォーマットすることもできます。

print         '%.2f' % var1, \
      'kg =' ,'%.2f' % var2, \
      'lb =' ,'%.2f' % var3, \
      'gal =','%.2f' % var4, \
      'l'
1
Greg Hewgill