目标

    • 了解循环
    • while语法【重点】
    • while应用
    • break和continue
    • while循环嵌套【重点】
    • while循环嵌套应用【应用】
    • for循环

    一.循环简介
    1.1循环的作用
    思考:假如我有一个女朋友,有一天我们闹矛盾生气了,女朋友说:道歉,说一百遍我错了,这时候程序员要怎么做。
    答:100遍print(‘我错了’)
    思考:复制粘贴100次吗?
    答:重复执行100次一样的代码,程序中循环即可
    循环的作用:让代码更高效的重复执行。
    1.2循环的分类
    在Python中,循环分为while和for两种,最终实现效果相同。
    二.while语法

    1. while 条件:
    2. 条件成立重复执行的代码1
    3. 条件成立重复执行的代码2
    4. ……

    2.1快速体验
    需求:重复执行100次print(‘我错了’) (输出更简洁一些,我们这里设置5次)
    分析:初始值是0次,终点是5次,重复做的事情输出t(‘我错了’) 。

    1. # 循环的计数器
    2. i = 0
    3. while i < 5:
    4. print('我错了')
    5. i += 1
    6. print('任务结束')

    三. while 应用
    3.1应用一:计算1-100累加和
    分析:1-100累加和,即1+2+3+4+……,即前两个数字的相加结果加下一个数字,前一个数字+1

    1. i = 1
    2. result = 0
    3. while i < 101:
    4. result = result + i
    5. i += 1
    6. print(result)

    注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成1-100做累加。
    3.2应用二:计算1-100偶数累加和
    分析:1-100的偶数和,即2+4+6+……+100,得到偶数的方法如下:

    • 偶数即使和2取余结果为0 的数字,可以加入条件语句判断是否为偶数,为偶数则累加
    • 初始值为0/2,计数器每次累加2

    3.2.1方法一:条件判断和2取余为零则累加
    3.2.2方法二:计时器控制

    四.break 和 continue
    break 和 continue是循环中满足一定条件退出循环的两种不同方式。
    4.1理解
    举例:一共吃五个苹果,吃完第一个,吃第二个……,这里吃苹果的动作是不是重复执行?
    情况一:如果吃的过程中,吃完第三个饱了,则不需要再吃第四个和第五个,即吃苹果的动作停止,这里就是break控制循环流程,即终止此循环。
    情况二:如果吃的过程中,吃到第三个吃出了一个大虫子,是不是这苹果就不吃了,开始吃第四个苹果,这里就是continue控制循环流程,即退出当前一次循环继而执行下一次循环代码。
    4.1.1情况一:break

    1. # break:当某些条件成立,退出整个循环
    2. # 循环吃五个苹果,吃到第三个饱了,第四第五个不吃了(不执行)-- ==4或>3
    3. i = 1
    4. while i <= 5:
    5. print('没吃饱,继续吃')
    6. i += 1
    7. print('吃饱了,不吃了')
    8. a = 1
    9. while a <= 5:
    10. # 如果迟到第4 或 >3,打印吃饱了,不吃了
    11. if a == 4:
    12. print('吃饱了,不吃了')
    13. break
    14. print(f'吃了第{a}个苹果')
    15. a += 1

    4.1.2情况二:continue

    1. # continue 当条件成立,退出当前一次循环,继而执行下一次循环
    2. # 吃5个苹果--循环;迟到第三个遇到虫子,不吃了--中断;没吃饱,继续吃第四第五个--只有第三个不吃
    3. i = 1
    4. while i <= 5:
    5. if i == 3:
    6. print('有虫子,不吃')
    7. # 如果使用continue,在continue之前一定要修改计数器,否则将进入死循环
    8. i += 1
    9. continue
    10. print(f'吃了第{i}个苹果了')
    11. i += 1

    五.while循环嵌套
    5.1 应用场景
    故事梗概:有天小明的女朋友生气了,惩罚小明说三遍“我错了”,这程序是不是循环即可?如果小明的女朋友说:还要刷今晚的碗,这程序怎么书写?

    1. while条件:
    2. print('我错了')
    3. print('刷晚饭的碗')

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

    1. while 条件:
    2. while 条件:
    3. print('我错了')
    4. print('刷晚饭的碗')

    5.2语法

    1. while 条件1:
    2. 条件1成立执行的代码
    3. ……
    4. while 条件2:
    5. 条件2成立执行的代码
    6. ……

    总结:所谓while循环嵌套,就是一个while里面嵌套一个while的写法,每个while和之前的基础语法是相同的。
    5.3快速体验:复现场景
    5.3.1

    1. j = 0
    2. while j <3:
    3. i = 0
    4. while i < 3:
    5. print('我错了')
    6. i += 1
    7. print('刷晚饭的碗')
    8. print('一套惩罚结束')
    9. j += 1

    5.3.2执行结果
    5.3.3理解执行流程
    当内部循环完成之后,再执行下一次外部循环的条件判断
    六. while 循环嵌套应用
    6.1应用一:打印星号(正方形)
    6.1.1需求

    1. *****
    2. *****
    3. *****
    4. *****
    5. *****

    6.1.2代码
    分析:一行输出5个星星,重复打印5行

    1. """
    2. 1. 打印 1个星星
    3. 2. 一行有5个,循环--5个星星在一行显示
    4. 3. 打印5行星星,循环--一行有5个星星
    5. """
    6. j = 0
    7. while j < 5:
    8. # 一行星星开始,不能换行,取消print默认结束符\n
    9. i = 0
    10. while i < 5:
    11. print('*', end='')
    12. i += 1
    13. # 一行星星结束;换行显示下一行星星,借助一个空print,利用print默认结束符换行
    14. print()
    15. j += 1

    6.2应用二:打印星号(三角形)
    6.2.1需求

    1. *
    2. **
    3. ***
    4. ****
    5. *****

    6.2.2代码
    分析:一行输出星星的个数和执行号是相等的,每行:重复打印行号数个星号,将打印行星号的命令重复执行5次实现打印5行。

    1. """
    2. 1. 打印星号(三角形),打印5行
    3. 2. 第一行1个星,第二行2个星,第三行3个星……--星星数=行号数
    4. 3. j表示行号
    5. """
    6. j = 0
    7. while j < 5:
    8. # 一行星星的打印
    9. i = 0
    10. # i 表示每行里面的星星个数,这个数要与行号j联动
    11. while i <= j:
    12. print('*', end='')
    13. i += 1
    14. print()
    15. j += 1

    6.3九九乘法表
    6.3.1执行结果

    1. 1 * 1 = 1
    2. 1 * 2 = 2 2 * 2 = 4
    3. 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
    4. 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
    5. 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
    6. 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
    7. 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
    8. 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
    9. 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

    6.3.2代码

    1. # 多行多个乘法表达式x * x = x*x
    2. """
    3. 1. 打印一个乘法表达式:x * x = x*x
    4. 2. 一行打印多个表达式,一行表达式的个数和行号数相等--循环:一个表达式--不换行
    5. 3. 打印多行表达式--循环--一行表达式--换行
    6. **** 一行表达式的个数=行号数
    7. """
    8. j = 1
    9. # j 表示行数
    10. while j <= 9:
    11. i = 1
    12. while i <= j:
    13. print(f'{i} * {j} = {i*j}', end='\t')
    14. i += 1
    15. print()
    16. j += 1

    七.for 循环
    7.1语法

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

    7.2快速体验

    1. str1 = 'china'
    2. for i in str1:
    3. print(i)

    执行结果:

    image.png
    7.3 break

    1. str1 = 'itheima'
    2. for i in str1:
    3. # 当某些条件成立退出循环--break:条件 i 取字符 e
    4. if i == 'e':
    5. print('遇到e不打印')
    6. break
    7. print(i)

    执行结果:
    image.png
    7.4 continue

    1. str1 = 'itheima'
    2. for i in str1:
    3. # 当某些条件成立退出循环--continue:条件 i 取字符 e
    4. if i == 'e':
    5. continue
    6. print(i)

    执行结果:
    image.png
    八.else
    循环可以和else配合使用,else下方缩进的代码指的是当前循环正常结束之后要执行的代码
    8.1 while…else
    需求:你的女朋友生气了,罚你连续说5遍“我错了”,如果道歉正常完毕,你的女朋友就原谅你,这个程序怎么写?

    1. i = 1
    2. while i <= 5
    3. print('我错了')
    4. i += 1
    5. print('原谅你了')

    思考:这最后的print是不是没有循环也能执行?

    1. i = 1
    2. while i <= 5:
    3. print('我错了')
    4. i += 1
    5. else:
    6. print('原谅你了')

    8.1.1语法

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

    8.1.2示例

    1. # 需求:道歉5遍“我错了”,完成之后执行“原谅你了”
    2. '''
    3. 1. 书写道歉的循环
    4. 2. 循环正常结束要执行的代码--else
    5. '''
    6. i = 1
    7. while i <=5:
    8. print('我错了')
    9. i += 1
    10. else :
    11. print('原谅你了')

    8.1.3退出循环的方式
    需求:你的女朋友生气了,罚你连续说5遍“我错了”,道歉执行到第三遍,npy觉得你不真诚,是不是要退出这循环?这个退出有两种可能性:

    • 更生气,不打算原谅,也不需要道歉了,程序如何书写?—-break
    • 只一遍不真诚,可以忍受,继续下一次道歉,程序如何书写?—-continue

    1.break

    1. i = 1
    2. while i <= 5:
    3. if i == 3:
    4. break
    5. print('我错了')
    6. i += 1
    7. else :
    8. print('原谅你了')

    image.png
    else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况下,else下方缩进的代码将不执行
    2.continue

    1. i = 1
    2. while i <= 5:
    3. if i == 3:
    4. print('这遍说的不真诚')
    5. i += 1
    6. continue
    7. print('我错了')
    8. i += 1
    9. else :
    10. print('原谅你了')

    image.png
    因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行else缩进的代码。
    8.2 for … else
    8.2.1语法

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

    else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。
    8.2.2示例

    1. str1 = 'English'
    2. for i in str1:
    3. print(i)
    4. else:
    5. print('循环正常结束执行的else的代码')

    8.2.3退出循环的方式
    1.break终止

    1. str1 = 'English'
    2. for i in str1:
    3. if i == 'E':
    4. print('遇到E不打印')
    5. break
    6. print(i)
    7. else:
    8. print('循环正常结束执行的else的代码')

    image.png
    2.continue

    1. str1 = 'English'
    2. for i in str1:
    3. if i == 'E':
    4. print('遇到E不打印')
    5. continue
    6. print(i)
    7. else:
    8. print('循环正常结束执行的else的代码')

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