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

文章目录

    • @[toc]
  • 什么是循环
    • Python中的循环方式
  • while循环
    • 语法
    • 示例
      • 执行过程
    • 应用
    • while循环嵌套
      • 示例1
      • 示例2
  • for循环
    • 语法
    • 示例
    • 内置函数range()的用法
      • range(x)
      • range(x, y)
      • range(x, y, z)
    • 应用
  • break与continue
    • break
      • while循环中的break
        • 未使用break
        • 使用break
      • for循环中的break
    • continue
      • while循环中的continue
      • for循环中的continue
    • break与continue在循环嵌套中的使用
      • 未使用break
      • 使用break
      • 使用continue
      • 总结
  • 循环中的else语句
    • while循环中的else
      • 当循环没有因为break而终止时
      • 当循环因为break而终止时
    • for循环中的else
      • 当循环没有因为break而终止时
      • 当循环因为break而终止时

个人主页:丷从心

系列专栏:Python基础

学习指南:【进收藏夹吃灰】Python基础学习指南


什么是循环


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

    i += 1
for i in range(10000):
    print('宝宝, 我错了')

Python中的循环方式

  • Python中只有两种循环方式:while循环、for循环

while循环


语法

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 + 1i += 1),第一次循环结束时i的值变为 1 1 1,然后继续判断i < 3是否成立,如果成立则进入下一次循环
  • i += 1i的值变为 3 3 3时,之后再对条件i < 3进行判断,此时条件i < 3不成立,循环结束

应用

  • 计算区间 [ 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 <= 3:
    j = 1
    while j <= i:
        print('* ', end='')

        j += 1

    print()  # 打印一个 '\n', 用于换行

    i += 1
* 
* * 
* * * 

示例2

  • 打印九九乘法表
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

for循环


  • while循环一样,for也可以完成循环功能
  • for循环可以遍历任何序列 / / /散列类型,如stringlisttupledictset等类型,至于什么是序列类型和散列类型,将在序列类型和散列类型章节进行讲解

语法

for 迭代变量 in 可迭代对象:
    每次循环, 迭代变量被设置为可迭代对象的当前元素, 执行缩进的代码
  • 至于什么是可迭代对象,将在迭代器章节进行讲解

示例

  • 打印 0 0 0 5 5 5
for i in range(6):
    print(i)
0
1
2
3
4
5

内置函数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(6):
    print(i)
0
1
2
3
4
5
  • 打印 0 0 0 5 5 5,不包含 6 6 6

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(4, 7):
    print(i)
4
5
6
  • 打印 4 4 4 6 6 6,不包含 7 7 7

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, 7, 2):
    print(i)
1
3
5
  • 步长 z z z可以为负数,此时需要 x x x大于 y y y
for i in range(6, 0, -2):
    print(i)
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 < 6:
    print(i)

    i += 1
0
1
2
3
4
5
使用break
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没有被打印

for循环中的break

url = 'http://www.baidu.com'

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

    print(char)
h
t
t
p

continue

  • continue不能单独使用,只能在循环内部使用

while循环中的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没有被打印,然后进入下一次循环

for循环中的continue

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在循环嵌套中的使用

  • 当在循环嵌套中使用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 = -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语句

  • else语句可以搭配循环进行使用,当循环并没有因为break而终止时,在循环结束后会执行else语句中的代码

while循环中的else

当循环没有因为break而终止时

i = 0
while i < 6:
    print(i)

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

当循环因为break而终止时

i = 0
while i < 6:
    if i == 3:
        break

    print(i)

    i += 1
else:
    print('循环结束...')
0
1
2
  • 可以看到,while循环因为break而终止,else语句中的代码并没有被执行

for循环中的else

当循环没有因为break而终止时

for i in range(6):
    print(i)
else:
    print('循环结束...')
0
1
2
3
4
5
循环结束...

当循环因为break而终止时

for i in range(6):
    if i == 3:
        break

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

你可能感兴趣的:(Python基础,Python基础,循环语句)