2015-10-15 81 views
0

所以我有一個家庭作業,我遇到了一些麻煩。在python中使用for循環格式化數字列表

我們應該使用嵌套for循環以各種不同的方式顯示一組數字。我需要3個出了以下模式4,我只知道如何使1

格局

1 

1 2 

1 2 3 

1 2 3 4 

1 2 3 4 5 

圖案B

1 2 3 4 5 

1 2 3 4 

1 2 3 

1 2 

1 

C模式

  1 

     2 1 

     3 2 1 

    4 3 2 1 

5 4 3 2 1 

圖案D

1 2 3 4 5 

    1 2 3 4 

     1 2 3 

      1 2 

       1 

(我不知道爲什麼C和d不會顯示正確的,但你應該有這個想法)

我有下面的代碼,以使圖案答:

for x in range(5): 
    for y in range(1, x + 2): 
     print(y, end = '\r') 
    print() 

任何幫助,將不勝感激!

+0

可能的複製。com/questions/22572617/number-patterns-using-loops-in-java) –

回答

0

您可以通過使用" " * y

另一種方法創建一個填充是遍歷所有25個點,並選擇在每個位置打印空格或數

for y in range(1, 6): 
    for x in range(1, 6): 
     print(" " if x > y else x, end=" ") 
    print() 

通知,如果你發生了什麼代入x > (6 - y)進行比較

也嘗試顛倒範圍。例如。

for y in reversed(range(1, 6)): 
+0

非常感謝你。我明白了一切,並能夠及時提交。 – Stendal

0

你看到部分C和D有什麼變化?有數字隨着第一個數字之間的最初空格而改變,對吧?這意味着你需要跟蹤循環中的空格。至於A和B,如果可以將算法拼成1,則可以執行另一個。提示:每種模式的初始起點是什麼?它是如何改變的?

0

由於您使用的Python 3的print()功能,可以解壓range對象與*操作和槓桿的print()方便sepend參數:

模式A:

for i in range(5): 
    print(*range(1, i+2), sep=' ', end='\n\n') 

模式B :

for i in range(5, 0, -1): 
    print(*range(1, i+1), sep=' ', end='\n\n') 

模式C:

for i in range(5): 
    print(' '*(4-i), end='') 
    print(*range(i+1, 0, -1), sep=' ', end='\n\n') 

模式d://計算器:使用循環中的Java數字模式(HTTP的

for i in range(5, 0, -1): 
    print(' '*(5-i), end='') 
    print(*range(1, i+1), sep=' ', end='\n\n')