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

Python 如何将while循环中的数据放入表中?,python,while-loop,Python,While Loop,基本上我是用多边形来估算圆周率。我有一个循环,它在再次运行循环之前为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)

基本上我是用多边形来估算圆周率。我有一个循环,它在再次运行循环之前为
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

我想找到一种方法,不用打印这些值,而是在一个漂亮整洁的表格中打印这些值,有什么帮助吗?

使用字符串格式。比如说,

        print('{:<4}{:>20f}{:>20f}'.format(t,ann,bnn))
{:20f}
替换为
ann
,右对齐,格式为浮点,长度为20的字符串

有关格式字符串语法的完整故事如下所示


要添加列标题,只需添加打印语句,如

    print('{:<4}{:>20}{:>20}'.format('t','a','b'))


也许仅仅为了这个目的,它就有些过分了,但它也可以制作漂亮的表,并可以将它们导出为其他格式,如HTML。

使用字符串格式。比如说,

        print('{:<4}{:>20f}{:>20f}'.format(t,ann,bnn))
{:20f}
替换为
ann
,右对齐,格式为浮点,长度为20的字符串

有关格式字符串语法的完整故事如下所示


要添加列标题,只需添加打印语句,如

    print('{:<4}{:>20}{:>20}'.format('t','a','b'))


也许仅仅为了这个目的,它就有些过分了,但它也可以制作漂亮的表,并可以将它们导出为其他格式,如HTML。

您可以使用输出格式使其看起来漂亮。请看下面的示例:

您可以使用输出格式使其看起来美观。请看下面的示例:

您希望将其存储在哪种表格中?形象HTML?CSV。。。野餐桌?@mhlester我希望它不是打印那些值而是打印一张桌子,只是一张简单的桌子。我应该在问题中明确说明,你想把它放在什么样的桌子上?形象HTML?CSV。。。野餐桌?@mhlester我希望它不是打印那些值而是打印一张桌子,只是一张简单的桌子。我应该在问题中明确说明这一点如果你想有一个更持久的解决方案,你也可以用这个答案保存到一个文件中。我不会添加一个新答案,但这将是对这个答案的一个很好的补充。是否有任何方法可以添加列标题?如果您想要一个更持久的解决方案,您也可以使用这个答案保存到文件中。我不会添加一个新的答案,但这将是对这个答案的一个很好的补充。有没有办法添加列标题
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 |
+-----+---------------+---------------+