2017-02-13 7 views
1

n을 문자열 형식 필드에 전달하여 pi를 소수 자릿수로 인쇄하려고합니다. 그러나 이것은 나에게 오류를 준다. 이 작업을 수행하는 올바른 방법은 무엇입니까?문자열 형식 지정을 사용하여 정수 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