2014-01-28 49 views
1

基本上我使用多邊形來估計pi。我有一個循環,在運行循環之前給我一個值爲nannbnn。這裏是我到目前爲止有:如何將數據從while循環放入表中?

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 

我想找到一種方法,使它,而不是打印出這些值,只需在一個漂亮整潔的表格中打印值,有什麼幫助?

+2

你想把它存儲在什麼樣的表中?圖片? HTML? CSV? ...野餐桌? – mhlester

+0

@mhlester我想要它而不是打印出這些值打印出一張表,只是一張簡單的表。我應該可能已經在問題 – Foflo

回答

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')) 

print語句對於發燒友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導出。

+0

中明確說明了如果您想擁有更持久的解決方案,則可以使用此答案將文件保存到文件中。我不會添加新的答案,但這將是這個答案的一個很好的補充。 –

+0

有什麼方法可以添加列標題 – Foflo