19

関数を作成したい次の単純なコードを数回繰り返しています。

for i in range(10):
    id  = "some id string looked up in dict"
    val = 63.4568900932840928 # some floating point number in dict corresponding to "id"
    tabStr += '%-15s = %6.1f\n' % (id,val)

この関数を呼び出すことができるようにしたい:def printStr(precision)
上記のコードを実行tabStrvalprecision小数点に戻ります。

例: for inprintStr(3)
を返します。63.457valtabStr

この種の機能を実現する方法はありますか?

4

3 に答える 3

42
tabStr += '%-15s = %6.*f\n' % (id, i, val)  

ここでiは小数点以下の桁数です。


.format()ところで、置き換えられた最近の Python では、%使用できます

"{0:<15} = {2:6.{1}f}".format(id, i, val)

同じタスクのために。

または、わかりやすくするためにフィールド名を付けます。

"{id:<15} = {val:6.{i}f}".format(id=id, i=i, val=val)

Python 3.6 以降を使用している場合は、単純にf-stringsを使用できます。

f"{id:<15} = {val:6.{i}f}"
于 2011-04-06T22:36:30.913 に答える
0

これもうまくいくはずです

tabStr += '%-15s = ' % id + str(round(val, i))

i必要な精度はどこにありますか。

于 2011-04-07T01:08:42.677 に答える