如何将while循环中的数据放入表中?

2024-10-04 11:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上我是用多边形来估计圆周率。我有一个循环,在再次运行循环之前,它给我一个nannbnn的值。以下是我目前所掌握的情况:

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

这就是如果我用这些值运行它得到的结果:

^{pr2}$

我想找到一种方法来代替打印这些值,只需将这些值打印在一个整洁的表格中,有什么帮助吗?在


Tags: andeftable情况out多边形printspower
2条回答

使用字符串格式。例如

        print('{:<4}{:>20f}{:>20f}'.format(t,ann,bnn))

生产

^{pr2}$

{:<4}替换为t,左对齐,格式为长度为4的字符串。在

{:>20f}替换为ann,右对齐,格式为一个长度为20的字符串的浮点。在

格式字符串语法的全部内容是explained here。在


要添加列标题,只需添加一个print语句,例如

    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。在

您可以使用输出格式使其看起来更漂亮。下面是一个例子: http://docs.python.org/release/1.4/tut/node45.html

相关问题 更多 >