我试图理解这个代码从“12初学者Python项目-编码课程”上的FreeCodeCamp Youtube频道,我真的不明白这个代码打印一个董事会的井字游戏项目。我已经看了一些其他的视频,我不喜欢他们如何设置他们的董事会。在我看视频之前,我关于如何解决这个问题的第一个想法失败了,所以我用她的代码来生成电路板,但我实际上不明白它在做什么。
使用代码:
number_board = [[str(i) for i in range(j*3, (j+1)*3)] for j in range(3)]
for row in number_board:
print('[' + ']['.join(row) + ']')
具有输出:
[0][1][2]
[3][4][5]
[6][7][8]
我希望它的输出基本上是一样的,除了从1开始,到9结束,我不明白的部分是:(j*3,(j+1)3)],用于范围(3)中的j
我知道最后一个范围(3)决定了有多少行,如果我将其更改为5,则将为5行,最多为14行。我认为我理解了“开始:stop:step”概念,但当我将start改为(j3+1,(j+1)*3)]时,输出为:
[1][2]
[4][5]
[7][8]
我想这是因为停止点的总和不是10,但是如果我把它变成类似于[[str(i)for i in range(j*3+1,10)] for j in range(3)]的东西,它从1开始,但不在我想要的地方结束。我尝试了一堆不同的组合来得到我想要的,但即使我猜对了,我仍然不知道为什么它会起作用。
[1][2][3][4][5][6][7][8][9]
[4][5][6][7][8][9]
[7][8][9]
也许我错过了一些很明显的东西,因为这是我学习的第一个月,所以我道歉,如果这是一个明显的问题,但我只是不明白如何开始:stop:step修饰符起作用(甚至不确定它们是否被称为修饰符或者它们的正确名称是什么)
1条答案
按热度按时间0g0grzrc1#
这种类型的循环在Python中被称为列表解析。做一个简短的搜索,你会得到很多关于它们的信息。你的代码中发生的事情实际上与下面的代码相同:
所以第一个代码迭代3行,对于每一行,它需要生成3个数字,这些数字由
range(j*3, (j+1)*3)
决定,所以请查看python范围文档如文档中所述,范围格式为
range(start, stop, step)
一旦创建了电路板,就会用另一个for循环输出它