Day04 课程(while & break & continue & for & 嵌套)

课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=66

4.1 循环章节课程介绍

4.1.1 目标

  了解循环

  while语法【重点】

  while应用

  break和continue

  while循环嵌套【重点】

  while循环嵌套应用【重点】

  for循环

4.2 了解循环

4.2.1 循环的作用

思考:假如有女朋友,有一天闹矛盾生气了,女朋友说:道歉,说100遍“媳妇儿,我错了”,这个时候程序员会怎么做?

答:100遍print("媳妇儿,我错了")

思考:复制粘贴100次吗?

答:重复执行100次一样的代码,程序中使用循环既可

循环的作用:让代码更高效的重复执行

4.2.2 循环的分类

在 Python 中,循环分为 while 和 for 两种,最终实现效果相同

4.3 while的语法和体验

4.3.1 while 的语法

while 语法:
    条件成立重复执行的代码1
    条件成立重复执行的代码2
    ......

4.3.2 快速体验

需求:复现重复执行100次print("媳妇儿,我错了")(输出更简洁一些,这里设置了5次)

分析:初始值是 0 次,终点是 5 次,重复做的事情输出“媳妇儿,我错了”

i = 1
while i <= 5:
    print("媳妇儿,我错了")
    i += 1  # i = i + 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\01-while语法.py 
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了

Process finished with exit code 0

4.4 计数器书写习惯

i = 0  # 工作中,开始一般取 0,因为计算机中从0开始计数
while i < 5:  # 取5,与需求相对应,容易理解,当不取5,也可以 <= 4
    print("媳妇儿,我错了")
    i += 1  # i = i + 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\02-循环计数器的书写习惯.py 
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了

Process finished with exit code 0

4.5 循环的执行流程

注意:随着多次按 ③下一步,i 是随着循环增加的,直到当 i 加到5,不符合循环的条件,跳出循环,再按照从上向下的循序执行代码

image

4.6 循环应用1-100累加

分析:1-100 的累加和,即 1+2+3+4...,即前两个数字的相加结果 + 下一个数字(前一个数字 + 1)

注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成1-100做累加

# 准备数据
i = 0
# 结果接收的变量
result = 0
# 循环
while i < 101:
    result += i  # result = result + i
    i += 1  # i = i + 1
# 打印最终结果
print(result)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\03-循环应用1之1-100累加和.py 
5050

Process finished with exit code 0

4.7 循环应用 1-100偶数累加和方法1

分析:1-100的偶数和,即 2 + 4 + 6 + 8....,得到偶数的方法如下:

  偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加

  初始值为 0 / 2,计数器每次累加2

# 需求;1-100 数字偶数累加和 -- 2+4+6...+100 =结果 -- 输出结果

# 准备数据
i = 1
# 结果接收的变量
result = 0
# 循环
while i < 101:
    if i % 2 == 0:  # 除2余为0,则进行相加
        result += i  # result = result + i
    i += 1  # i = i + 1
# 打印最终结果
print(result)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\04-循环应用1之1-100偶数累加和.py 
2550

Process finished with exit code 0

4.8 循环应用 1-100偶数累加和方法2

4.8.1 循环计数器方法

i = 0
result = 0
# 循环
while i < 101:
    result += i  # i = i + 1
    i += 2  # 直接以 0 + 2 .... 加偶数的方式
# 打印最终结果
print(result)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\05-循环应用1之1-100偶数累加和计数器控制.py 
2550

Process finished with exit code 0

4.8.2 两种方法对比

# 第一种
i = 1
result = 0
while i < 101:
    if i % 2 == 0:  # 除2余为0,则进行相加
        result += i  # result = result + i
    i += 1  # i = i + 1
print(result)
------------------------------------------------
# 第二种
i = 0
result = 0
while i < 101:
    result += i  # i = i + 1
    i += 2  # 直接以 0 + 2 .... 加偶数的方式
print(result)

4.8.3 总结

 第一种方法更好,是使用程序去计算,而第二种,是通过人大脑的计算公式去计算的

 推荐:第一种计算机方式计算

4.9 循环的注意事项

# 一定要为循环定义出口
i = 0
result = 0
# 循环
while i < 101:
    result += i  # i = i + 1
    # i += 2  # 当被注释掉或者漏写
# 打印最终结果
print(result)

------------------------------------------------ 执行后陷入死循环,点击红色方块,结束键结束
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\05-循环应用1之1-100偶数累加和计数器控制.py 
Traceback (most recent call last):
  File "D:\Pycharm\code\day04\05-循环应用1之1-100偶数累加和计数器控制.py", line 4, in <module>
    while i < 101:
          ^^^^^^^
KeyboardInterrupt

Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)

4.10 了解break和continue

break 和 continue 是循环中满足一定条件退出循环的两种方式

4.10.1 理解

举例:一共吃5个苹果,吃完一个,吃第二个...,这里"吃苹果"的动作是不是重复执行?

情况一:如果吃的过程中,吃完第三个吃饱了,则不需要再吃第4个和第5个苹果,即是吃苹果的动作停止,这里就是 break 控制循环流程,即 终止此循环

情况二:如果吃的过程中,吃到第三个吃出一个大虫子...,是不是这个苹果就不吃了,开始吃第四个苹果,这里就是 continue 控制循环流程,即 退出当前一次循环继而执行下一次循环代码

4.11 break

# break; 当某些条件成立,退出整个循环
i = 1
while i < 6:
    if i == 4:
        print(f"吃饱了,不吃了")
        break  # 终止循环
    print(f"吃了 {i} 个苹果")
    i += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\06-吃苹果之break.py 
吃了 1 个苹果
吃了 2 个苹果
吃了 3 个苹果
吃饱了,不吃了

Process finished with exit code 0

4.12 continue

# continue;当条件成立,退出当前一次循环,继而执行下一次循环
i = 1
while i < 6:
    if i == 3:
        print(f"吃出一个大虫子,这个苹果不吃了")
        # 如果使用 continue,在 continue 之前一定要修改计数器,否则进入死循环
        i += 1  # 如果不增加 i += 1,continue 执行,i == 3 一直成立,陷入死循环
        continue  # 调到循环头部,再次进入循环

    print(f"吃了第{i}个苹果")
    i += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\07-吃苹果之continue.py 
吃了第1个苹果
吃了第2个苹果
吃出一个大虫子,这个苹果不吃了
吃了第4个苹果
吃了第5个苹果

Process finished with exit code 0

4.13 while循环嵌套的作用和语法

4.13.1 举例

故事梗概:有天女朋友生气了,惩罚"说3遍,我错了",这个程序是不是循环既可?但如果女朋友说:还要刷今天晚饭的碗,这个程序怎么书写?

while 条件:
    print("媳妇儿,我错了")
print("刷晚饭的碗")

但如果女朋友还是生气,把这套惩罚要连续执行3天,如何书写程序?

while 条件:
    while 条件:
        print("媳妇儿,我错了")
    print("刷晚饭的碗")

4.13.2 语法

while 条件1:
    条件1成立执行的代码
    ......
    while 条件2:
        条件2成立执行的代码
        ......

总结:所谓 while 循环嵌套,就是一个 while 里面嵌套一个 while 的写法,每个 while 和之前的基础语法是相同的

4.14 while循环嵌套快速体验

"""
1.循环打印3次媳妇儿,我错了
2.今天刷晚饭的碗
3.上面是一套惩罚,这一套惩罚要重复执行3天 -- 一套惩罚要重复执行 -- 放到一个while循环里面
"""

j = 0
while j < 3:
    i = 0
    while i < 3:
        print("媳妇儿,我错了")
        i += 1
    print("刷晚饭的碗")
    print("一套惩罚结束了.....")
    j += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\08-while循环嵌套快速体验.py 
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
刷晚饭的碗
一套惩罚结束了.....
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
刷晚饭的碗
一套惩罚结束了.....
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
刷晚饭的碗
一套惩罚结束了.....

Process finished with exit code 0

4.15 循环的执行流程

当内部循环执行完成之后,再执行下一次外部循环的条件判断

image

1.父循环条件 -> 判断真假 -> 假False -> 退出父循环

2.父循环条件 -> 判断真假 -> 真True -> 执行的代码1 -> 子循环条件 -> 判断真假 -> 假False -> 退出子循环 -> 进入①,判断父循环

3.父循环条件 -> 判断真假 -> 真True -> 执行的代码1 -> 子循环条件 -> 判断真假 -> 真True -> 子循环执行的代码 -> 进入②,判断子循环 

4.16 while 循环嵌套应用之打印星号(正方形)

"""
1.打印1个星星
2.一行5个:循环 -- 5个星星在一行显示
3.打印5行星星,循环 -- 2 一行5个
"""

i = 0
while i < 5:  # 父循环,执行5行
    j = 0
    while j < 5:
        print( "*",end="")   # 子循环,每行打印5个*,取消print默认结束符\n
        j += 1
    print()  # 利用默认的 end="\n" ,小循环后换行
    i += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day04\09-while 循环嵌套应用之打印星号(正方形).py" 
*****
*****
*****
*****
*****

Process finished with exit code 0

4.17 while 循环嵌套应用之打印星号(三角形)

# 三角形:每行星星的个数和行号数相等
j = 0
while j < 5:  # 行号
    i = 0
    while i <= j:  # * 号 与行号联动
        print("*",end = "")
        i += 1
    print()
    j += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day04\10.while 循环嵌套应用之打印星号(三角形).py" 
*
**
***
****
*****

Process finished with exit code 0

4.18 while循环嵌套应用之九九乘法表

# 多行多个乘法表达式 x * x = x*x

j = 1
while j <= 9:  # 行表达式
    i = 1
    while i <= j:  # 行与列联动,控制列数与行数一致
        print(f"{i} * {j} =",i * j ,end = "\t")  # 前面显示数字,后面显示两数的商,也可以{i} * {j} ={i * j}, 列 \t 对齐
        i += 1
    print()  # 每行打印完换行
    j += 1

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\11.while循环嵌套应用之九九乘法表.py 
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    

Process finished with exit code 0

4.19 for 循环语法和体验

4.19.1 语法

for 临时变量 in 序列:  # 临时变量 程序员自定义,序列是数据序列,数据内部多个数据组成
    重复执行的代码1
    重复执行的代码2
    ......

4.19.2 快速体验

str1 = 'itheima'
for i in str1:  # 数据序列里面是字符串中的字符
    print(i)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day04\12.for 循环语法和体验.py" 
i
t
h
e
i
m
a

Process finished with exit code 0

4.20 break退出for循环

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print("遇到e怎么办?")  # e 后面不打印
        break  # break 终止整个循环
    print(i)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\13.break退出for循环.py 
i
t
h
遇到e怎么办?

Process finished with exit code 0

4.21 continue退出for循环

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print("遇到e怎么办?")  # 只是 e 不打印
        continue  # continue 终止当前循环
    print(i)

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\14.continue退出for循环.py 
i
t
h
遇到e怎么办?
i
m
a

Process finished with exit code 0

4.22 循环的else简介

循环可以和 else 配合使用,else 下方缩进的代码指的是 当循环正常结束之后要执行的代码

4.23 while...else

需求:女朋友生气了,要惩罚,连续说5遍“媳妇儿,我错了”,如果道歉正常完毕女朋友就原谅我了,这个程序怎么写?

4.23.1 没有while...else时

i = 1
while i <=5:
    print("媳妇儿,我错了")
    i += 1
print("媳妇儿原谅我了......")

注意:第二个print,没有循环也仍然执行。

4.23.2 while...else语法

while 条件:
    条件成立重复执行的代码
else:
    循环正常结束之后要执行的代码

4.23.3 while...else案例

# 需求:道歉5遍媳妇我错了,完成之后执行媳妇原谅我了
i = 1
while i <=  5:
    print("媳妇儿,我错了")
    i += 1
else:  # 与 while 有联系,while 不正常退出,下面不执行
    print("媳妇儿原谅我了......")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\15.while...else.py 
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿,我错了
媳妇儿原谅我了......

Process finished with exit code 0

4.24 while...else之break

需求:女朋友生气,要求道歉5遍:媳妇儿,我错了,道歉到第三遍的时候,媳妇埋怨这一遍说的不真诚,是不是就要退出循环?这个退出有两种可能性:

  1.更生气,不打算原谅,也不需要道歉了,程序如何书写

  2.只一遍不真诚,可以忍受,继续下一遍道歉,程序如何书写

i = 1
while i <=  5:
    if i == 3:
        break  # 终止循环,循环属于非正常结束
    print("媳妇儿,我错了")
    i += 1
else:  # 循环非正常结束,下面不执行
    print("媳妇儿原谅我了......")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\16.while...else之break.py 
媳妇儿,我错了
媳妇儿,我错了

Process finished with exit code 0

注意:所谓 else 指的是循环正常结束之后要执行代码,即如果是 break 终止循环的情况,else 下方缩进的代码将不执行

4.25 while...else之continue

i = 1
while i <=  5:
    if i == 3:
        print("这遍说的不真诚!")
        i += 1  # 切记,continue 上面一定要 i += 1,否则 i = 3 一直成立
        continue
    print("媳妇儿,我错了")
    i += 1
else:  # 这次循环正常结束,下面执行
    print("媳妇儿原谅我了......")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\17.while...else之continue.py 
媳妇儿,我错了
媳妇儿,我错了
这遍说的不真诚!
媳妇儿,我错了
媳妇儿,我错了
媳妇儿原谅我了......

Process finished with exit code 0

注意:因为 continue 是退出当前一次循环,继续下一次循环,所以该循环在 continue 控制下是可以正常结束的,当循环结束后,则执行 else 缩进的代码

4.26 for...else

4.26.1 for...else语法

for 临时变量 in 序列:
    重复执行的代码
    ......
else:
    循环正常结束之后要执行的代码

注意:所谓 else 指的是循环正常结束之后要执行的代码,即如果是 break 终止循环的情况, else 下方缩进的代码将不执行

4.26.2 for...else案例

str1 = 'itheima'
for i in str1:
    print(i)
else:
    print("循环正常结束后执行的 else 的代码")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\18.for...else.py 
i
t
h
e
i
m
a
循环正常结束后执行的 else 的代码

Process finished with exit code 0

4.27 for...else之break和continue

4.27.1 for...else之break

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print("遇到e怎么办?")  # 不打印 e,同时也不打印 else 下方的代码,直接终止 for 循环
        break
    print(i)
else:  # 正常退出才执行
    print("循环正常结束后执行的 else 的代码")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\19.for...else之break.py 
i
t
h
遇到e怎么办?

Process finished with exit code 0

注意:没有执行 else 缩进的代码

4.27.2 for...else之continue

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print("遇到e怎么办?")  # 不打印 e,但打印 else 下方的代码,介绍当前单个循环
        continue
    print(i)
else:  # 正常退出 执行
    print("循环正常结束后执行的 else 的代码")

------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day04\20.for...else之continue.py 
i
t
h
遇到e怎么办?
i
m
a
循环正常结束后执行的 else 的代码

Process finished with exit code 0

注意:因为 continue 是退出当前一次循环,继续下一次循环,所以该循环在 continue 控制下是可以正常结束的,当循环结束后,则执行 else 缩进的代码

4.28 总结

循环的作用:控制某句代码或某些代码重复执行

while 循环语法

while 语法:
    条件成立重复执行的代码1
    条件成立重复执行的代码2
    ......

while 循环嵌套语法

while 条件1:
    条件1成立执行的代码
    ......
    while 条件2:
        条件2成立执行的代码
        ......

for 循环语法

for 临时变量 in 序列:
    重复执行的代码1
    重复执行的代码2
    ......

break 退出整个循环

continue 退出本次循环,继续执行下一次重复执行的代码

else

  while 和 for 都可以配合 else 使用

  else 下方缩进的代码含义:当循环正常结束后执行的代码,非正常结束不执行

  break 终止循环,不会执行 else 下方缩进的代码

  continue 退出本次循环的方式,执行 else 下方缩进的代码

注意:while 使用 continue 要在上方定义 i += 1 ,当前单次循环的出口

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2025-09-10 15:16  马俊南  阅读(10)  评论(0)    收藏  举报