个人主页:丷从心
系列专栏:Python基础
学习指南:【进收藏夹吃灰】Python基础学习指南
print('宝宝, 我错了')
print('宝宝, 我错了')
print('宝宝, 我错了')
# 此处省略 9997 行 print('宝宝, 我错了')
i = 0
while i < 10000:
print('宝宝, 我错了')
i += 1
for i in range(10000):
print('宝宝, 我错了')
Python
中只有两种循环方式:while
循环、for
循环while 布尔表达式:
布尔表达式为真时, 执行缩进的代码
i = 0
while i < 3:
print('-' * 15)
print(f'这是第 {i + 1} 次循环')
print(f'此时 i 的值为 {i}')
i += 1
---------------
这是第 1 次循环
此时 i 的值为 0
---------------
这是第 2 次循环
此时 i 的值为 1
---------------
这是第 3 次循环
此时 i 的值为 2
i < 3
成立,因为最开始i = 0
,然后执行while
循环内部代码i + 1
次循环”以及“当前i
的值”i
进行加 1 1 1操作(注意,Python
语言中没有i++
操作,只能使用i = i + 1
或i += 1
),第一次循环结束时i
的值变为 1 1 1,然后继续判断i < 3
是否成立,如果成立则进入下一次循环i += 1
后i
的值变为 3 3 3时,之后再对条件i < 3
进行判断,此时条件i < 3
不成立,循环结束sum = 0
i = 1
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(f'区间 [1, 100] 内偶数的累积和为 {sum}')
区间 [1, 100] 内偶数的累积和为 2550
while
语句中可以包含if
语句,对条件进行判断while
循环内部代码可以包含while
循环,称为循环嵌套*
* *
* * *
i = 1
while i <= 3:
j = 1
while j <= i:
print('* ', end='')
j += 1
print() # 打印一个 '\n', 用于换行
i += 1
*
* *
* * *
i = 1
while i <= 9:
j = 1
while j <= i:
print(f'{j}*{i}={j * i}\t', end='')
j += 1
print() # 打印一个 '\n', 用于换行
i += 1
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
while
循环一样,for
也可以完成循环功能for
循环可以遍历任何序列 / / /散列类型,如string
、list
、tuple
、dict
、set
等类型,至于什么是序列类型和散列类型,将在序列类型和散列类型章节进行讲解for 迭代变量 in 可迭代对象:
每次循环, 迭代变量被设置为可迭代对象的当前元素, 执行缩进的代码
for i in range(6):
print(i)
0
1
2
3
4
5
range()
函数用于生成一个range
类型生成器,可以理解为生成一个列表,至于什么是生成器,将在生成器章节进行讲解range()
时,range(x)
返回 0 0 0, 1 1 1, ⋯ \cdots ⋯, x − 1 x - 1 x−1,for
循环对这些数据进行遍历,保存到临时变量中for i in range(6):
print(i)
0
1
2
3
4
5
range()
时,range(x, y)
返回 x x x, x + 1 x + 1 x+1, ⋯ \cdots ⋯, y − 1 y - 1 y−1for i in range(4, 7):
print(i)
4
5
6
range()
时,range(x, y, z)
返回从 x x x到 y − 1 y - 1 y−1的数据,以 z z z为步长,即每隔 z z z取一个数据for i in range(1, 7, 2):
print(i)
1
3
5
for i in range(6, 0, -2):
print(i)
6
4
2
sum = 0
for i in range(1, 101):
sum += i
print(f'区间 [1, 100] 内整数的累积和为 {sum}')
区间 [1, 100] 内整数的累积和为 5050
break
用于结束整个循环,continue
用于结束本次循环break
不能单独使用,只能在循环内部使用i = 0
while i < 6:
print(i)
i += 1
0
1
2
3
4
5
i = 0
while i < 6:
if i == 3:
break
print(i)
i += 1
0
1
2
i
增加到 3 3 3时,此时继续循环会判断i
的值是否等于 3 3 3,如果是则执行break
,结束整个循环,所以 3 3 3、 4 4 4、 5 5 5没有被打印url = 'http://www.baidu.com'
for char in url:
if char == ':':
break
print(char)
h
t
t
p
continue
不能单独使用,只能在循环内部使用i = 0
while i < 6:
i += 1
if i == 3:
continue
print(i)
1
2
4
5
6
i
增加到 3 3 3时,之后会判断i
的值是否等于 3 3 3,如果是则执行continue
,结束本次循环,后面的print(i)
语句没有被执行,所以 3 3 3没有被打印,然后进入下一次循环url = 'http://www.baidu.com'
for char in url:
if char == '/':
continue
print(char)
h
t
t
p
:
w
w
w
.
b
a
i
d
u
.
c
o
m
break
和continue
时会发生什么呢?i = 0
while i < 3:
print(i)
j = 0
while j < 3:
print(f'({i}, {j})')
j += 1
i += 1
0
(0, 0)
(0, 1)
(0, 2)
1
(1, 0)
(1, 1)
(1, 2)
2
(2, 0)
(2, 1)
(2, 2)
i = 0
while i < 3:
print(i)
j = 0
while j < 3:
if j == 1:
break
print(f'({i}, {j})')
j += 1
i += 1
0
(0, 0)
1
(1, 0)
2
(2, 0)
j
的值增加到 1 1 1时,内层while
循环终止,外层while
循环仍继续执行i = 0
while i < 3:
print(i)
j = -1
while j < 2:
j += 1
if j == 1:
continue
print(f'({i}, {j})')
i += 1
0
(0, 0)
(0, 2)
1
(1, 0)
(1, 2)
2
(2, 0)
(2, 2)
j
的值增加到 1 1 1时,内层while
循环的当前一次循环终止,外层while
循环仍继续执行break
用于结束整个循环,只对它所在的循环内部起作用continue
用于结束本次循环,只对它所在的循环内部起作用else
语句可以搭配循环进行使用,当循环并没有因为break
而终止时,在循环结束后会执行else
语句中的代码i = 0
while i < 6:
print(i)
i += 1
else:
print('循环结束...')
0
1
2
3
4
5
循环结束...
while
循环执行过程中并没有因为break
而终止,当while
循环结束后,执行了else
语句中的代码i = 0
while i < 6:
if i == 3:
break
print(i)
i += 1
else:
print('循环结束...')
0
1
2
while
循环因为break
而终止,else
语句中的代码并没有被执行for i in range(6):
print(i)
else:
print('循环结束...')
0
1
2
3
4
5
循环结束...
for i in range(6):
if i == 3:
break
print(i)
else:
print('循环结束...')
0
1
2