采用整数n并使用字符串格式将pi打印到n位的函数

时间:2017-02-13 20:09:53

标签: python python-3.x string-formatting

我希望通过将整数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

2 个答案:

答案 0 :(得分:3)

您的代码缺少类型说明符:

from math import pi
import sys 

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

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

答案 1 :(得分: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