2015-10-15 96 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')