我是纯小白,队友是拥有16年经验的魔都大厂软件开发大咖,开始记录我的Python学习之旅。
在 Python 中,双重 for 循环(nested for loop)是一种常用的编程结构,它允许我们在一个循环内部嵌套另一个循环。这种结构通常用于处理二维数组、矩阵或任何需要对多个数据集合进行组合或比较的情况.
1、外层循环与内层循环
在Python中,双重循环是通过将一个循环嵌套在另一个循环内部来实现的。外层循环每执行一次,内层循环会完整执行一遍。以下是一个简单的例子:
2、循环控制变量
在双重循环中,通常会有两个控制变量,一个用于外层循环,另一个用于内层循环。控制变量可以用于索引数组、控制流程等。在上面的例子中,i 是外层循环的控制变量,j 是内层循环的控制变量。
例子:
目的:输出一个10×10的表格
里面就是1~100这100个数
for j in range(1, 11):
shuzi = 10 * i + j
print(shuzi, end=" ")
print("") #一行完成了,我们换行
写下来我们就发现1-10不是成行的,而且还超出100了,这些都是新手容易犯的错误。 错误地认为第54 55行执行完了所有循环,才开始执行下面的for循环。
正确的顺序是,53行的语句块整体(包括56行的子循环)执行一次,而不是把54 55行拆出来先执行。也就是说执行顺序是
53545556
5758575857585758575857585758575857585758
上面是53行for循环的语句块第一次执行
54 55执行一次56执行一次(注意56是一个循环,它执行一次,就表示它下面的57 58执行了10次)
确实是先执行前面的,但是不是前面的先执行10次再执行后面的10次,而是前面后面前面后面前面后面这样交替执行。所以PYTHON就出现这样的结果,后面改进:
因为只有54 55行先 全部执行10次,它们才变成1行啊
但是上面也说了,它不会全部执行完,而是一次一次的执行
把56 57 5859行都注释掉再执行(注释:Ctrl+/)
54 55行就会输出1行了
果然显示一行1-10
这说明:所谓的输出1行,只是我们人类这么认为,计算机它根本没有这么想
反过来把54,55注释掉,会出现余下的。
那么问题来:怎么样把第一行1-10和后面的11-100拼接到一起呢?
由于54 55行的含义不是输出一行(如果是,那么它们上面的53行循环应该让它们输出10个1行也就是10行才对)
而是输出一个数字,输出一个空格,重复10次
可以这么做:
53 54 55 行是一个循环,
53(复制原来的53行,粘贴到55行下面) 56 57 58 59是一个循环(注意53重复出现了,要复制一次)
而且都来101-110这些是不需要的。那么,需要修改第二个条件,
这个执行了10次,加上第一行就是11次了,所以把11给修为10,
For j in range(1,10), 就可以了。
还是有问题:第一行为什么显示1-20而不是1-10呢?
第56行上面添加一下
print("")
我们的目标
输出一个10×10的表格
里面就是1~100这100个数
全部实现。
关注我分享更多干货!