【发布时间】:2016-04-21 05:35:36
【问题描述】:
我正在努力阅读这本书:用 python 自动化无聊的东西。 我在第 6 章的练习项目:台式打印机。 (https://automatetheboringstuff.com/chapter6/) - cmmd + F "表格打印机"
我设法找到了答案,但我发现我对嵌套循环的理解相当薄弱。为什么嵌套循环的顺序很重要?它如何影响它打印数据的方式?
这是数据:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
这是第一个代码:
for a in range(len(tableData[0])):
for b in range(len(tableData)):
print(tableData[b][a],end = "")
print()
然后打印出来:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
这是第二个代码 (我切换了 a 和 b 的顺序嵌套,没有改变我想要打印的内容):
for b in range(len(tableData)):
for a in range(len(tableData[0])):
print(tableData[b][a],end = "")
print()
它会打印这个:
apples orangescherries banana
Alice Bob Carol David
dogs cats moose goose
这是第三个代码(我没有改变嵌套顺序,而是改变了我要打印的内容):
for a in range(len(tableData[0])):
for b in range(len(tableData)):
print(tableData[a][b],end = "")
print()
它打印这个:
apples orangescherries
Alice Bob Carol
dogs cats moose
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
printTable()
File "<pyshell#11>", line 10, in printTable
print(tableData[x][j].rjust(colWidths[0]),end = "")
IndexError: list index out of range
我难以理解的是:
(1) 第一个和第二个代码 - 为什么嵌套顺序会影响打印的内容?
(2) 第一个和第三个代码 - 为什么 print[a][b] 的顺序很重要?
很抱歉,这是一个非常长的问题,但我遇到了一些麻烦,请帮帮我。
【问题讨论】:
-
为什么你认为顺序不重要?
print "a"后跟print "b"与print "b"后跟print "a"不同。你真的了解for循环的作用吗? -
是的,这就是我无法理解循环嵌套部分的原因。如果你能在网上给我一些解释,那就太好了!我知道解释它可能非常令人恼火。谢谢!
-
如果你有一对嵌套循环,内循环体对每对外循环变量和内循环变量执行一次。顺序由循环结构决定。例如,(0,0), (0,1), (1,0), (1,1) 与 (0,0), (1,0), (0,1), (1,1 )。你只需要推理出来。这不是计算机语言问题,而是逻辑问题。这应该是你自己想一想就能弄清楚的事情。
-
教程不是很好。如果您不明白某一点,请使用另一个教程。我推荐learnpythonthehardway.org