基本上我正在使用多边形来估计pi。我有一个循环,它为n
,ann
和bnn
提供了一个值,然后再次运行循环。这是我到目前为止:
def printPiTable(an,bn,n,k):
"""Prints out a table for values n,2n,...,(2^k)n"""
u = (2**k)*n
power = 0
t = ((2**power)*n)
while t<=u:
if power < 1:
print(t,an,bn)
power = power + 1
t = ((2**power)*n)
else:
afrac = (1/2)*((1/an)+(1/bn))
ann = 1/afrac
bnn = sqrt(ann*bn)
print(t,ann,bnn)
an = ann
bn = bnn
power = power + 1
t = ((2**power)*n)
return
如果我使用这些值运行它,这就是我得到的:
>>> printPiTable(4,2*sqrt(2),4,5)
4 4 2.8284271247461903
8 3.3137084989847607 3.0614674589207187
16 3.1825978780745285 3.121445152258053
32 3.1517249074292564 3.1365484905459398
64 3.1441183852459047 3.1403311569547534
128 3.1422236299424577 3.1412772509327733
我想找到一种方法来制作它而不是打印出这些值,只需在一个漂亮整齐的表中打印值,任何帮助?
答案 0 :(得分:4)
使用字符串格式。例如,
print('{:<4}{:>20f}{:>20f}'.format(t,ann,bnn))
产生
4 4.000000 2.828427
8 3.313708 3.061467
16 3.182598 3.121445
32 3.151725 3.136548
64 3.144118 3.140331
128 3.142224 3.141277
{:<4}
被t
替换,左对齐,格式化为长度为4的字符串。
{:>20f}
由ann
替换,右对齐,格式化为浮点数到长度为20的字符串。
格式字符串语法的完整故事是explained here。
要添加列标题,只需添加类似
的打印语句 print('{:<4}{:>20}{:>20}'.format('t','a','b'))
对于更高级的ascii表,请考虑使用像prettytable这样的包:
import prettytable
def printPiTable(an,bn,n,k):
"""Prints out a table for values n,2n,...,(2^k)n"""
table = prettytable.PrettyTable(['t', 'a', 'b'])
u = (2**k)*n
power = 0
t = ((2**power)*n)
while t<=u:
if power < 1:
table.add_row((t,an,bn))
power = power + 1
t = ((2**power)*n)
else:
afrac = (1/2)*((1/an)+(1/bn))
ann = 1/afrac
bnn = sqrt(ann*bn)
table.add_row((t,ann,bnn))
an = ann
bn = bnn
power = power + 1
t = ((2**power)*n)
print(table)
printPiTable(4,2*sqrt(2),4,5)
产量
+-----+---------------+---------------+
| t | a | b |
+-----+---------------+---------------+
| 4 | 4 | 2.82842712475 |
| 8 | 3.31370849898 | 3.06146745892 |
| 16 | 3.18259787807 | 3.12144515226 |
| 32 | 3.15172490743 | 3.13654849055 |
| 64 | 3.14411838525 | 3.14033115695 |
| 128 | 3.14222362994 | 3.14127725093 |
+-----+---------------+---------------+
对于这个唯一的目的而言可能有点过分,但是Pandas也可以制作漂亮的表格,并且可以用其他格式导出它们,例如HTML。
答案 1 :(得分:0)
您可以使用输出格式使其看起来很漂亮。在这里看一个例子: http://docs.python.org/release/1.4/tut/node45.html