2014-02-12 102 views
2

我閱讀了一些與我的類似標題相關的文章,但其中大多數只是提供基本的語法建議,例如使用end = ''在循環的同一行上打印多個字符串

我想顯示的五角形數字n是1-100,每行只顯示10個數字。我想不出一種方法來做到這一點,而不會搞亂我的陳述。我可以使用end = '',但我不知道如何告訴循環「後10次迭代好嗎然後跳到下一行

def getPentagonalNumber(n): 
    (n * ((3 * n) - 1))/2 

def main(): 
    for i in range(100): 
     getPentagonalNumber(i) 
+1

你可以只做2個for循環,內循環從1到10嗎? – bornruffians

回答

3

你可以使用加入類似的東西:

for i in range(1, 100, 10): # i = 1, 11, 21, 31, 41,..... 
    print(' '.join(['%6d' % getPentagonalNumber(n) for n in range(i, i+10)])) 

輸出:

 1  5  12  22  35  51  70  92 117 145 
    176 210 247 287 330 376 425 477 532 590 
    651 715 782 852 925 1001 1080 1162 1247 1335 
    1426 1520 1617 1717 1820 1926 2035 2147 2262 2380 
    2501 2625 2752 2882 3015 3151 3290 3432 3577 3725 
    3876 4030 4187 4347 4510 4676 4845 5017 5192 5370 
    5551 5735 5922 6112 6305 6501 6700 6902 7107 7315 
    7526 7740 7957 8177 8400 8626 8855 9087 9322 9560 
    9801 10045 10292 10542 10795 11051 11310 11572 11837 12105 
12376 12650 12927 13207 13490 13776 14065 14357 14652 14950 

由你缺少在函數返回的路上getPentagonalNumber()

我在做什麼使用範圍在外環差距10生成的數字:

>>> range(1, 100, 10) 
[1, 11, 21, 31, 41, 51, 61, 71, 81, 91] 

迴路內創建列表間隙內的數字(實際上會創建一個數字字符串列表),例如

>>> ['%3d' % getPentagonalNumber(n) for n in range(1, 1 +10)] 
[' 1', ' 5', ' 12', ' 22', ' 35', ' 51', ' 70', ' 92', '117', '145'] 

並將數字字符串連接爲單個字符串並進行打印。

+0

謝謝隊友, 但'%6d'做什麼? –

+0

@ user3268003'%6d'是格式字符串,用於以字符串形式打印整數。 'd'代表小數,'6'代表'6'的寬度。嘗試在你的控制檯上>>> >>>「我的年齡是%d,我在%d標準中學習」%(10,14)' –

+0

你學習14個標準嗎? :) –

2
for i in range(100): 
    if i % 10 == 9: 
     print getPentagonalNumber(i) 
    else: 
     print getPentagonalNumber(i), 

測試該打印只是i,並得到

0 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 19 
20 21 22 23 24 25 26 27 28 29 
30 31 32 33 34 35 36 37 38 39 
40 41 42 43 44 45 46 47 48 49 
50 51 52 53 54 55 56 57 58 59 
60 61 62 63 64 65 66 67 68 69 
70 71 72 73 74 75 76 77 78 79 
80 81 82 83 84 85 86 87 88 89 
90 91 92 93 94 95 96 97 98 99 
+0

我簡化了一下你的代碼;然而這個邏輯仍然不是很正確(你在第一行有11個數字,最後有9個數字)......也許更好的使用'if if(i + 1)%10:' –

+0

最後有9個因爲循環不包括100 –

+0

仍然有100個元素總數... –

2
for i in range(100): 
    print(getPentagonalNumber(i), end=' ') 
    if i % 10 == 9: 
     print('\n')