Python嵌套循环数字模式输出额外的行?

时间:2018-10-13 22:46:38

标签: python loops nested-loops

我正在尝试创建一个专门用于for循环的数字网格。我的代码如下

def draw_grid (num):#x represents row y representes column
for x in range (num):
    print(x+1, end= ' ' )
    print()
    for y in range (num):
        print(y+1, end= ' ' )

例如,当我绘制10个网格时,输出结果就是这样。 1 1 2 3 4 5 6 7 8 9 10 2 1 2 3 4 5 6 7 8 9 10 3 1 2 3 4 5 6 7 8 9 10 4 1 2 3 4 5 6 7 8 9 10 5 1 2 3 4 5 6 7 8 9 10 6 1 2 3 4 5 6 7 8 9 10 7 1 2 3 4 5 6 7 8 9 10 8 1 2 3 4 5 6 7 8 9 10 9 1 2 3 4 5 6 7 8 9 10 10 1 2 3 4 5 6 7 8 9 10

我尝试过几种不同的操作方式,但是我无法辨别是什么在顶部创建了1,在最右边的列中创建了2-10?我的Y值应采用不同的编码吗?

1 个答案:

答案 0 :(得分:0)

这是正在发生的事情

def draw_grid (num):#x represents row y representes column
    for x in range (num):
        print(x+1, end= ' ' )
        print()
        for y in range (num):
            print(y+1, end= ' ' ) 

在外循环中,每次迭代都打印x + 1,没有换行end = ' ',然后打印新行print()。在您的第一次迭代中,它的打印1不带换行符,后跟print()中的换行符,然后进入您的内部循环,并再次打印1-10,结尾不带新行。现在,当您的外循环的第二次迭代发生时,它会打印2,它将在所有y值后跟print()之后立即打印,然后重复该过程。

您最想要的是

def draw_g(num):
    for x in range(num):
        for y in range(num):
            print(y + 1, end = ' ')
        print()

draw_g(10)

这里,我们仅使用外部循环来确定行数,这是我们将打印内部循环中的所有值的次数。对于我们的第一次迭代,我们在y + 1中打印range(num)的所有print()值,使用x in range(num)前进到下一行,然后进行外循环的第二次迭代,这对1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 重复 。结果就是这样。

like the following example : 

            booksList.add(Book("The Wild Robot", "A 2 Categorie Book", "Description book", R.drawable.thewildrobot))
        booksList.add(Book("Maria Semples", "Categorie Book", "Description book", R.drawable.mariasemples))