2017-02-13 20 views
1

整数をnを文字列書式設定フィールドに渡して、小数点以下を桁数nに出力したいとします。しかし、これは私にエラーを与える。これを行う正しい方法は何ですか?整数nをとり、文字列フォーマットを使用してpiからn桁まで出力する関数

マイコード:

from math import pi 
def print_pi(n): 
    print(("%."+str(n)) % pi) 

エラー:

Traceback (most recent call last): 
    File "1.2.3.py", line 4, in <module> 
    print_pi(5) 
    File "1.2.3.py", line 3, in print_pi 
    print(("%."+str(n)) % pi) 
ValueError: incomplete format 

答えて

3

これは新しい(実際には、かなり古いとクリーナーです今)format方法:

ニースときちんと
>>> fmtstr = "{:.{}f}".format(math.pi, 2) 
>>> print(fmtstr) 
3.14 
>>> fmtstr = "{:.{}f}".format(math.pi, 10) 
>>> print(fmtstr) 
3.1415926536 

>>> def print_pi(n, pi=math.pi): 
...  print("{:.{}f}".format(pi, n)) 
... 
>>> for i in range(10): 
...  print_pi(i) 
... 
3 
3.1 
3.14 
3.142 
3.1416 
3.14159 
3.141593 
3.1415927 
3.14159265 
3.141592654 
+0

'format'メソッドが_newer_であると言うのは、常に正しいでしょう。 – martineau

3

あなたのコードは、型指定が欠落しています。

from math import pi 
import sys 

def print_pi(n): 
    print(("%%.%df" % n) % pi) 

print_pi(int(sys.argv[1])) 
+2

はIMOあなたの答えで 'sys.argv'を使用して、不要なと気が散るの両方です。 – martineau

関連する問題