目标
- 了解循环
- while语法【重点】
- while应用
- break和continue
- while循环嵌套【重点】
- while循环嵌套应用【应用】
- for循环
一.循环简介
1.1循环的作用
思考:假如我有一个女朋友,有一天我们闹矛盾生气了,女朋友说:道歉,说一百遍我错了,这时候程序员要怎么做。
答:100遍print(‘我错了’)
思考:复制粘贴100次吗?
答:重复执行100次一样的代码,程序中循环即可
循环的作用:让代码更高效的重复执行。
1.2循环的分类
在Python中,循环分为while和for两种,最终实现效果相同。
二.while语法
while 条件:
条件成立重复执行的代码1
条件成立重复执行的代码2
……
2.1快速体验
需求:重复执行100次print(‘我错了’) (输出更简洁一些,我们这里设置5次)
分析:初始值是0次,终点是5次,重复做的事情输出t(‘我错了’) 。
# 循环的计数器
i = 0
while i < 5:
print('我错了')
i += 1
print('任务结束')
三. while 应用
3.1应用一:计算1-100累加和
分析:1-100累加和,即1+2+3+4+……,即前两个数字的相加结果加下一个数字,前一个数字+1
i = 1
result = 0
while i < 101:
result = result + i
i += 1
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
# break:当某些条件成立,退出整个循环
# 循环吃五个苹果,吃到第三个饱了,第四第五个不吃了(不执行)-- ==4或>3
i = 1
while i <= 5:
print('没吃饱,继续吃')
i += 1
print('吃饱了,不吃了')
a = 1
while a <= 5:
# 如果迟到第4 或 >3,打印吃饱了,不吃了
if a == 4:
print('吃饱了,不吃了')
break
print(f'吃了第{a}个苹果')
a += 1
4.1.2情况二:continue
# continue 当条件成立,退出当前一次循环,继而执行下一次循环
# 吃5个苹果--循环;迟到第三个遇到虫子,不吃了--中断;没吃饱,继续吃第四第五个--只有第三个不吃
i = 1
while i <= 5:
if i == 3:
print('有虫子,不吃')
# 如果使用continue,在continue之前一定要修改计数器,否则将进入死循环
i += 1
continue
print(f'吃了第{i}个苹果了')
i += 1
五.while循环嵌套
5.1 应用场景
故事梗概:有天小明的女朋友生气了,惩罚小明说三遍“我错了”,这程序是不是循环即可?如果小明的女朋友说:还要刷今晚的碗,这程序怎么书写?
while条件:
print('我错了')
print('刷晚饭的碗')
但是如果女朋友还是生气,把这套惩罚要连续3天都执行,要如何书写程序?
while 条件:
while 条件:
print('我错了')
print('刷晚饭的碗')
5.2语法
while 条件1:
条件1成立执行的代码
……
while 条件2:
条件2成立执行的代码
……
总结:所谓while循环嵌套,就是一个while里面嵌套一个while的写法,每个while和之前的基础语法是相同的。
5.3快速体验:复现场景
5.3.1
j = 0
while j <3:
i = 0
while i < 3:
print('我错了')
i += 1
print('刷晚饭的碗')
print('一套惩罚结束')
j += 1
5.3.2执行结果
5.3.3理解执行流程
当内部循环完成之后,再执行下一次外部循环的条件判断
六. while 循环嵌套应用
6.1应用一:打印星号(正方形)
6.1.1需求
*****
*****
*****
*****
*****
6.1.2代码
分析:一行输出5个星星,重复打印5行
"""
1. 打印 1个星星
2. 一行有5个,循环--5个星星在一行显示
3. 打印5行星星,循环--一行有5个星星
"""
j = 0
while j < 5:
# 一行星星开始,不能换行,取消print默认结束符\n
i = 0
while i < 5:
print('*', end='')
i += 1
# 一行星星结束;换行显示下一行星星,借助一个空print,利用print默认结束符换行
print()
j += 1
6.2应用二:打印星号(三角形)
6.2.1需求
*
**
***
****
*****
6.2.2代码
分析:一行输出星星的个数和执行号是相等的,每行:重复打印行号数个星号,将打印行星号的命令重复执行5次实现打印5行。
"""
1. 打印星号(三角形),打印5行
2. 第一行1个星,第二行2个星,第三行3个星……--星星数=行号数
3. j表示行号
"""
j = 0
while j < 5:
# 一行星星的打印
i = 0
# i 表示每行里面的星星个数,这个数要与行号j联动
while i <= j:
print('*', end='')
i += 1
print()
j += 1
6.3九九乘法表
6.3.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
6.3.2代码
# 多行多个乘法表达式x * x = x*x
"""
1. 打印一个乘法表达式:x * x = x*x
2. 一行打印多个表达式,一行表达式的个数和行号数相等--循环:一个表达式--不换行
3. 打印多行表达式--循环--一行表达式--换行
**** 一行表达式的个数=行号数
"""
j = 1
# j 表示行数
while j <= 9:
i = 1
while i <= j:
print(f'{i} * {j} = {i*j}', end='\t')
i += 1
print()
j += 1
七.for 循环
7.1语法
for 临时变量 in 序列:
重复执行的代码1
重复执行的代码2
……
7.2快速体验
str1 = 'china'
for i in str1:
print(i)
执行结果:
7.3 break
str1 = 'itheima'
for i in str1:
# 当某些条件成立退出循环--break:条件 i 取字符 e
if i == 'e':
print('遇到e不打印')
break
print(i)
执行结果:
7.4 continue
str1 = 'itheima'
for i in str1:
# 当某些条件成立退出循环--continue:条件 i 取字符 e
if i == 'e':
continue
print(i)
执行结果:
八.else
循环可以和else配合使用,else下方缩进的代码指的是当前循环正常结束之后要执行的代码
8.1 while…else
需求:你的女朋友生气了,罚你连续说5遍“我错了”,如果道歉正常完毕,你的女朋友就原谅你,这个程序怎么写?
i = 1
while i <= 5
print('我错了')
i += 1
print('原谅你了')
思考:这最后的print是不是没有循环也能执行?
i = 1
while i <= 5:
print('我错了')
i += 1
else:
print('原谅你了')
8.1.1语法
while 条件:
条件成立重复执行的代码
else :
循环正常结束之后要执行的代码
8.1.2示例
# 需求:道歉5遍“我错了”,完成之后执行“原谅你了”
'''
1. 书写道歉的循环
2. 循环正常结束要执行的代码--else
'''
i = 1
while i <=5:
print('我错了')
i += 1
else :
print('原谅你了')
8.1.3退出循环的方式
需求:你的女朋友生气了,罚你连续说5遍“我错了”,道歉执行到第三遍,npy觉得你不真诚,是不是要退出这循环?这个退出有两种可能性:
- 更生气,不打算原谅,也不需要道歉了,程序如何书写?—-break
- 只一遍不真诚,可以忍受,继续下一次道歉,程序如何书写?—-continue
1.break
i = 1
while i <= 5:
if i == 3:
break
print('我错了')
i += 1
else :
print('原谅你了')
else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况下,else下方缩进的代码将不执行
2.continue
i = 1
while i <= 5:
if i == 3:
print('这遍说的不真诚')
i += 1
continue
print('我错了')
i += 1
else :
print('原谅你了')
因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行else缩进的代码。
8.2 for … else
8.2.1语法
for 临时变量 in 序列:
重复执行的代码
…
else:
循环正常结束之后要执行的代码
else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。
8.2.2示例
str1 = 'English'
for i in str1:
print(i)
else:
print('循环正常结束执行的else的代码')
8.2.3退出循环的方式
1.break终止
str1 = 'English'
for i in str1:
if i == 'E':
print('遇到E不打印')
break
print(i)
else:
print('循环正常结束执行的else的代码')
2.continue
str1 = 'English'
for i in str1:
if i == 'E':
print('遇到E不打印')
continue
print(i)
else:
print('循环正常结束执行的else的代码')
因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行else缩进的代码。