九、循环语句

一、 while 循环

while 循环:检查一个条件表达式,只要条件表达式结果为 True ,就执行下面缩进的代码,直到条件表达式结果为 False 时,结束循环。

1
2
3
4
5
6
7
8
9
i=1
while i<=10:
if i==10:
print(i)
else:
print(i, end=',')
i+=1

# 1,2,3,4,5,6,7,8,9,10

::: warning

while 循环条件设置不当时,可能导致死循环。

:::

1
2
3
i = 1
while i <= 100:
print(i)

二、for 循环

for 循环一般用于从 字符串、 列表 、 元组 等中依次取出每个元素进行操作。

1
2
3
4
5
6
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']

for student in studentAges:
print(student)

# 小王:17,小赵:16,小李:17,小孙:16,小徐:18,

三、range 函数

range 函数:根据输入的 int 数字,会生成一个可以被 for 循环遍历的列表。

range 函数参数:( 开始值 = 0,结束值,步长 )

::: tip

range 函数 只有一个参数时,生成的列表从 0 开始,到 参数值 -1 结束。

:::

1
2
3
4
for n in range(10, 20, 5):
print(n, end=',')

# 10,15,

四、 enumerate 函数

enumerate 函数:在 for 循环时可以同时返回 列表中的元素 和它的 下标

1
2
3
4
5
6
7
8
9
10
11
# 找出下面列表中年龄大于17岁的学员,打印出他们在列表中的索引

studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']


for idx, student in enumerate(studentAges):
print(idx,student)
if int(student.split(':')[-1]) > 17:
print(idx)

# 4

五、 break 终止循环

break :在循环中,如果遇到 break ,则该循环体立即终止

::: warning

  1. 在函数中 ,break 必须在 return 的上方,负责无效。
  2. 多个 break 必须位于不同的分支。
  3. breakreturn 都可以让 循环结束

:::

1
2
3
4
5
6
7
8
9
10
11
def inputCommand():
while True:
command = input("请输入命令:")
if command == 'exit':
break
print(f'输入的命令是{command}')

return
print('末尾语句')

inputCommand()

六、 continue 跳过循环

continue :在循环中,如果满足某种条件,可以 跳过当前循环而不退出循环体,继续执行后面的循环。

1
2
3
4
5
6
7
8
9
while True:
command = input("请输入命令:")
if command == 'exit':
break
if command == 'cont':
continue
print(f'输入的命令是{command}')

print('程序结束')

七、 列表推导式

列表推导式:将列表中的元素依次经过 相同的处理 得到新的列表。

格式:[ 循环体 for 局部变量 in 原列表]

1
2
3
4
list1 = [1,2,3,4,5,6]

list2 = [num**3 for num in list1]
print(list2) # [1, 8, 27, 64, 125, 216]

八、 循环嵌套

多个循环可以嵌套使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 打印99乘法表

for i in range(1, 10):
for j in range(1, 10):
if i >= j:
print(f"{j} * {i} = {i*j:2}", end=' ')
else:
continue
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

九、 冒泡排序

冒泡排序:通过依次取出数据,两两进行比较后排序

1
2
3
4
5
6
7
8
9
def dataSort(data):
for i in range(len(data)):
for j in range(i):
if i != j and data[i] < data[j]:
data[i], data[j] = data[j], data[i]
return data

arr = [23, 41, 25, 54, 18, 14]
print(dataSort(arr)) # [14, 18, 23, 25, 41, 54]