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 |
+-----+---------------+---------------+