1.Python 循环嵌套介绍
循环是编程中经常使用的一种语句结构,Python提供了多种循环结构,其中最常用的是for循环和while循环。循环嵌套则是在一个循环中嵌套另一个循环,以实现更复杂的功能。
1.1 for循环嵌套
for循环的嵌套可以实现多重循环,通常用于对多维列表或元组的遍历。
for i in range(3): # 外层循环
for j in range(2): # 内层循环
print('i:',i,', j:',j)
输出结果:
i: 0 , j: 0
i: 0 , j: 1
i: 1 , j: 0
i: 1 , j: 1
i: 2 , j: 0
i: 2 , j: 1
以上代码中,i表示外层循环的变量,j表示内层循环的变量,内层循环在外层循环的每一次循环中都会执行完一次。
1.2 while循环嵌套
while循环也可以嵌套,具体使用方法与for循环类似。
i = 1
while i < 4: # 外层循环
j = 1
while j < 3: # 内层循环
print('i:',i,', j:',j)
j += 1
i += 1
输出结果:
i: 1 , j: 1
i: 1 , j: 2
i: 2 , j: 1
i: 2 , j: 2
i: 3 , j: 1
i: 3 , j: 2
以上代码中,i表示外层循环的变量,j表示内层循环的变量,内层循环在外层循环的每一次循环中都会执行完一次。
2.循环嵌套的常见应用
循环嵌套常用于各种算法和程序的实现中,以下介绍几个常见的应用。
2.1 打印九九乘法表
九九乘法表是小学数学中的必学内容,下面通过循环嵌套来实现。
for i in range(1, 10):
for j in range(1, i+1):
print(j, '*', i, '=', i*j, end='\t')
print() # 输出空行
输出结果:
1 * 1 = 1
1 * 2 = 2
2 * 2 = 4
1 * 3 = 3
2 * 3 = 6
3 * 3 = 9
1 * 4 = 4
2 * 4 = 8
3 * 4 = 12
4 * 4 = 16
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
1 * 6 = 6
2 * 6 = 12
3 * 6 = 18
4 * 6 = 24
5 * 6 = 30
6 * 6 = 36
1 * 7 = 7
2 * 7 = 14
3 * 7 = 21
4 * 7 = 28
5 * 7 = 35
6 * 7 = 42
7 * 7 = 49
1 * 8 = 8
2 * 8 = 16
3 * 8 = 24
4 * 8 = 32
5 * 8 = 40
6 * 8 = 48
7 * 8 = 56
8 * 8 = 64
1 * 9 = 9
2 * 9 = 18
3 * 9 = 27
4 * 9 = 36
5 * 9 = 45
6 * 9 = 54
7 * 9 = 63
8 * 9 = 72
9 * 9 = 81
2.2 寻找水仙花数
水仙花数是指一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。
153 = 1^3 + 5^3 + 3^3
下面通过循环嵌套来寻找3位水仙花数。
for i in range(100, 1000):
hundred = i // 100 # 取百位数
ten = i // 10 % 10 # 取十位数
one = i % 10 # 取个位数
if pow(hundred, 3) + pow(ten, 3) + pow(one, 3) == i:
print(i)
输出结果:
153
370
371
407
2.3 判断质数
质数是指除了1和自身以外,无法被其他自然数整除的自然数。判断一个数是否为质数常用的方法是试除法,即用该数除以2到sqrt(n)之间的所有自然数,如果都无法整除,则该数为质数。
下面通过循环嵌套来判断一个数是否为质数。
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
num = 10
if is_prime(num):
print(num, '是质数')
else:
print(num, '不是质数')
输出结果:
10 不是质数
其中math.sqrt(n)用于求一个数的平方根。
3.注意事项
在使用循环嵌套时需要注意以下几点:
循环嵌套的层数过多容易导致代码复杂度过高,不易维护。
循环嵌套中的变量名要具有描述性,方便理解。
在循环嵌套过程中尽量减少重复代码,提高代码可读性。
4.总结
循环嵌套是编程中常用的一种语句结构,可以实现复杂的功能,如打印乘法表、寻找水仙花数和判断质数等。在使用循环嵌套时,需要注意循环嵌套的层数过多容易导致代码复杂度过高,变量命名要具有描述性,循环体中尽量减少重复代码。