【Python基础】循环语句(5094字)

因上努力

个人主页:丷从心·

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


什么是循环

  • 程序中需要重复运行的代码,可以通过循环实现
  • 比如和女朋友道歉,说一万遍“宝宝,我错了”,在没有学习循环之前,我们只能通过如下方式实现
print('宝宝, 我错了')
print('宝宝, 我错了')
print('宝宝, 我错了')
# 此处省略 9997 行 print('宝宝, 我错了')
  • 在学习循环之后,使用几行代码就能实现
i = 0
while i < 10000:
    print('宝宝, 我错了')

    i += 1
Python中的循环方式
  • Python中只有两种循环方式
    • while循环
    • for循环

while循环

格式
while 条件:
    条件为真时, 需要运行的代码
示例
i = 0
while i < 5:
    print('-' * 15)

    print(f'这是第 {i + 1} 次循环')
    print(f'此时 i 的值为 {i}')

    i += 1
---------------
这是第 1 次循环
此时 i 的值为 0
---------------
这是第 2 次循环
此时 i 的值为 1
---------------
这是第 3 次循环
此时 i 的值为 2
---------------
这是第 4 次循环
此时 i 的值为 3
---------------
这是第 5 次循环
此时 i 的值为 4
运行过程
  • 首先判断i < 5成立,因为最开始i = 0,然后运行while循环内部的代码
  • 打印“这是第i + 1次循环”以及“当前i的值”
  • 然后对变量i进行加 1 1 1操作(注意Python语言中没有i++操作,只能使用i += 1i = i + 1),第一次循环结束时i的值变为 1 1 1,然后继续判断i < 5是否成立,如果成立则进入下一次循环
  • i += 1i的值变为 5 5 5时,之后再对条件i < 5进行判断,此时条件i < 5不成立,循环结束
应用
  • 计算区间 [ 1 , 100 ] [1 , 100] [1,100]内偶数的累积和
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循环内部代码可以包含while循环,称为循环嵌套
示例1
  • 打印如下图形
*
* *
* * *
* * * *
* * * * *
i = 1
while i <= 5:
    j = 1
    while j <= i:
        print('* ', end='')

        j += 1

    print()  # 用于换行

    i += 1
* 
* * 
* * * 
* * * * 
* * * * *
示例2
  • 打印九九乘法表
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f'{j}*{i}={j * i}\t', end='')

        j += 1

    print()  # 用于换行

    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

for循环

  • while循环一样,for也可以完成循环功能
  • for循环可以遍历任何序列数据类型,如stringlisttupledictset等数据类型
格式
for 临时变量 in 可迭代对象:
    满足循环条件时, 需要运行的代码
  • 至于什么是可迭代对象,将在迭代器章节进行讲解
示例
  • 循环输出 0 0 0 4 4 4
for i in range(5):
    print(i)
0
1
2
3
4
内置函数range()的用法
  • range()函数用于生成一个range类型生成器,可以理解为生成一个列表,至于什么是生成器,将在生成器章节进行讲解
range(x)
  • 当使用 1 1 1个参数调用range()时,range(x)返回 0 0 0 1 1 1 ⋯ \cdots x − 1 x - 1 x1for循环对这些数据逐个进行提取,保存到临时变量中
for i in range(5):
    print(i)
0
1
2
3
4
  • 输出 0 0 0 4 4 4,不包含 5 5 5
range(x, y)
  • 当使用 2 2 2个参数调用range()时,range(x, y)返回 x x x x + 1 x + 1 x+1 ⋯ \cdots y − 1 y - 1 y1
for i in range(5, 10):
    print(i)
5
6
7
8
9
  • 输出 5 5 5 9 9 9,不包含 10 10 10
range(x, y, z)
  • 当使用 3 3 3个参数调用range()时,range(x, y, z)返回从 x x x y − 1 y - 1 y1的数据,以 z z z为步长,即每隔 z z z取一个数据
for i in range(1, 10, 2):
    print(i)
1
3
5
7
9
  • 步长 z z z可以为负数,此时需要 x x x大于 y y y
for i in range(10, 1, -2):
    print(i)
10
8
6
4
2
应用
  • 计算区间 [ 1 , 100 ] [1 , 100] [1,100]内整数的累积和
sum = 0
for i in range(1, 101):
    sum += i

print(f'区间 [1, 100] 内整数的累积和为 {sum}')
区间 [1, 100] 内整数的累积和为 5050

break与continue

  • 在循环的过程中,有时会因为某些条件成立或不成立而需要结束整个循环,或结束当前一次循环
  • break用于结束整个循环,continue用于结束本次循环
break
  • break不能单独使用,只能在循环内部使用
while循环中的break
未使用break
i = 0
while i < 5:
    print(i)

    i += 1
0
1
2
3
4
使用break
i = 0
while i < 5:
    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没有被打印
for循环中的break
url = 'www.baidu.com'

for char in url:
    if char == '.':
        break

    print(char)
w
w
w
continue
  • continue不能单独使用,只能在循环内部使用
while循环中的continue
i = 0
while i < 5:
    i += 1

    if i == 3:
        continue

    print(i)
1
2
4
5
  • 当循环变量i增加到 3 3 3时,之后会判断i的值是否等于 3 3 3,如果是则执行continue,结束本次循环,后面的print(i)语句没有被运行,所以 3 3 3没有被打印,然后进入下一次循环
for循环中的continue
url = 'www.baidu.com'

for char in url:
    if char == 'w':
        continue

    print(char)
.
b
a
i
d
u
.
c
o
m
break与continue在循环嵌套中的使用
  • 当在循环嵌套中使用breakcontinue时会发生什么呢?
未使用break
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)
使用break
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循环仍继续运行
使用continue
i = 0
while i < 3:
    print(i)

    j = 0
    while j < 3:
        j += 1

        if j == 1:
            continue

        print(f'({i}, {j})')

    i += 1
0
(0, 2)
(0, 3)
1
(1, 2)
(1, 3)
2
(2, 2)
(2, 3)
  • 可以看到当循环变量j的值为 1 1 1时,内层while循环的当前一次循环终止,外层while循环仍继续运行
总结
  • break用于结束整个循环,只对它所在的循环内部起作用
  • continue用于结束本次循环,只对它所在的循环内部起作用

循环中的else语句

  • else语句可以搭配循环进行使用,当循环并没有因为break终止时,在循环结束后会运行else语句中的代码
while循环中的else
当循环没有因为break而终止时
i = 0
while i < 5:
    print(i)

    i += 1
else:
    print('循环结束')
0
1
2
3
4
循环结束
  • 可以看到,在整个while循环运行过程中并没有因为break而终止,当while循环结束后,运行了else语句
当循环因为break终止时
i = 0
while i < 5:
    if i == 3:
        break

    print(i)

    i += 1
else:
    print('循环结束')
0
1
2
  • 可以看到,while循环因为break而终止,else语句并没有被运行
for循环中的else
当循环没有因为break而终止时
for i in range(5):
    print(i)
else:
    print('循环结束')
0
1
2
3
4
循环结束
当循环因为break终止时
for i in range(5):
    if i == 3:
        break

    print(i)
else:
    print('循环结束')
0
1
2

  • 48
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值