目标
- 了解循环
- while语法【重点】
- while应用
- break和continue
- while循环嵌套【重点】
- while循环嵌套应用【难点】
- for循环
循环语句介绍
生活中的循环场景
思考:假如我有个女朋友,有一天我们闹矛盾生气了,女朋友说:道歉,说一万遍“媳妇儿,我错了”。这个时候程序员会怎么做?
答: 一万遍print("媳妇儿,我错了")
思考:复制粘贴一万次吗?
答:重复执行一万次一样的代码,程序中循环即可
软件开发中循环的使用场景
跟媳妇承认错误,说一万遍"媳妇儿,我错了"
print("媳妇儿,我错了")
print("媳妇儿,我错了")
print("媳妇儿,我错了")
...(还有99997遍)...
使用循环语句一句话搞定
i = 0
while i < 10000:
print("媳妇儿,我错了")
i += 1
循环的作用:让代码更高效的重复执行。
循环的分类
在Python中,循环分为while
和for
两种,最终实现效果相同。
小总结
while和if的用法基本类似,区别在于:if 条件成立,则执行一次; while 条件成立,则重复执行,直到条件不成立为止。
一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成
循环不是必须要使用的,但是为了提高代码的重复使用率,所以开发者都会采用循环
while循环
- while循环的格式
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
- 练习题:循环打印5次
i = 0
while i < 5:
print("当前是第%d次执行循环" % (i + 1))
print("i=%d" % i)
i+=1
- 结果:
当前是第1次执行循环
i=0
当前是第2次执行循环
i=1
当前是第3次执行循环
i=2
当前是第4次执行循环
i=3
当前是第5次执行循环
i=4
- 死循环
由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执⾏,程序⽆法终⽌!
while循环应用
- 计算1~100的累积和(包含1和100)
分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果 + 下一个数字( 前一个数字 + 1)。
参考代码如下:
#encoding=utf-8
i = 1
sum = 0
while i <= 100:
sum = sum + i
i += 1
print("1~100的累积和为:%d" % sum)
注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成1-100做累加。
- 计算1~100之间偶数的累积和(包含1和100)
分析:1-100的偶数和,即 2 + 4 + 6 + 8....,得到偶数的方法如下:
偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加
初始值为0 / 2 , 计数器每次累加2
参考代码如下:
方法一:条件判断和2取余数则累加
#encoding=utf-8
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum = sum + i
i+=1
print("1~100的累积和为:%d" % sum)
方法二:计数器控制
i = 0
result = 0
while i <= 100:
result += i
i += 2
# 输出2550
print(result)
while循环嵌套
前面学习过if的嵌套了,想一想if嵌套是什么样子的?
类似if的嵌套,while嵌套就是:while里面还有while
1. while嵌套的格式
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
...(省略)...
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
...(省略)...
2. while嵌套应用
要求:打印如下图形:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
参考代码:
i = 1
while i <= 5:
j = 1
while j <= 5:
print("*", end=" ")
j += 1
print()
i += 1
3.练习题:打印三角形
要求:打印如下图形:
*
* *
* * *
* * * *
* * * * *
参考代码:
i = 1
while i <= 5:
j = 1
while j <= i:
print("*", end=" ")
j += 1
print()
i += 1
4. 九九乘法表
参考代码:
# 重复打印9行表达式
j = 1
while j <= 9:
# 打印一行里面的表达式 a * b = a*b
i = 1
while i <= j:
print(f'{i}*{j}={j*i}', end='\t')
i += 1
print()
j += 1
5. 练习题: 猜拳游戏(while版)
使用while循环语句实现猜拳游戏.
for循环
像while循环一样,for可以完成循环的功能。
在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。
for循环的格式
for 临时变量 in 列表或者字符串等可迭代对象:
循环满足条件时执行的代码
demo1
name = 'it'
for x in name:
print(x)
运行结果如下:
i
t
demo2
name = 'hello'
for x in name:
print(x)
if x == 'l':
print("Hello world!")
运行结果如下:
h
e
l
Hello world!
l
Hello world!
o
demo3
# range(5) 会牵扯到迭代器的知识,
# 作为刚开始学习python的我们,此阶段仅仅知道range(5)表示可以循环5次即可
for i in range(5):
print(i)
'''
效果等同于 while 循环的:
'''
i = 0
while i < 5:
print(i)
i += 1
'''
运行结果如下:
0
1
2
3
4
'''
break和continue
break
for循环
普通的循环示例如下:
name = 'it'
for x in name:
print('----')
print(x)
else:
print("==for循环过程中,如果没有执行break退出,则执行本语句==")
运行结果:
----
i
----
t
==for循环过程中,如果没有break则执行==
带有break的循环示例如下:
name = 'it'
for x in name:
print('----')
if x == 't':
break
print(x)
else:
print("==for循环过程中,如果没有执行break退出,则执行本语句==")
运行结果:
----
i
while循环
普通的循环示例如下:
i = 0
while i<5:
i = i+1
print('----')
print(i)
else:
print("==while循环过程中,如果没有执行break退出,则执行本语句==")
运行结果:
----
1
----
2
----
3
----
4
----
5
==while循环过程中,如果没有break则执行==
带有break的循环示例如下:
i = 0
while i<5:
i = i+1
print('----')
if i==3:
break
print(i)
else:
print("==while循环过程中,如果没有执行break退出,则执行本语句==")
运行结果:
----
1
----
2
----
小结:
break的作用:立刻结束break所在的循环
continue
for循环
带有continue的循环示例如下:
name = 'ith'
for x in name:
print('----')
if x == 't':
continue
print(x)
else:
print("==while循环过程中,如果没有break则执行==")
运行结果:
----
i
----
----
h
----
==while循环过程中,如果没有break则执行==
while循环
带有continue的循环示例如下:
i = 0
while i<5:
i = i+1
print('----')
if i==3:
continue
print(i)
运行结果:
----
1
----
2
----
----
4
----
5
小结:
continue的作用:用来结束本次循环,紧接着执行下一次的循环
循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码。
所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。
因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行了else缩进的代码。
注意点
break/continue
只能用在循环中,除此以外不能单独使用
在嵌套循环中时,只对最近的一层循环起作用
else
while和for都可以配合else使用
else下方缩进的代码含义:当循环正常结束后执行的代码
break终止循环不会执行else下方缩进的代码
continue退出循环的方式执行else下方缩进的代码