6.循环语句-while
上一节介绍了,条件判断语句,这节我们来看下循环语句:while
主要内容:
- 小目标:掌握循环语句:while;
- 主要内容:while, break, continue,while语句与if语句使用,闰年判断;
1.循环语句:while
1.1 基本语法:
while 表达式:
代码1
while语句说明:
表达式:条件表达式;
while执行过程:
- 判断表达式值是否为真;
- 如果条件表达式为真,执行代码1;
- 如果条件表达式为假,退出循环;
1.2 使用常见与注意点:
- 使用场景:循环做一件事情
- 注意点:退出条件处理,不要出现不必要的死循环;
尝试下死循环:
while True:
print('666')
结果:根本停不下来,一直输出:"666";
1.3 练习:输出0,20之间值
需求:在一行中输出:0,1,2,...20, ;
实现思路:
定义变量i=0
循环判断 i<=20;
打印出i的值
代码实现:
i = 0
while i <= 20:
print(i)
结果:都是0,根本停不下来;
分析问题:
- i的初始值为0,在循环中我们没有对i进行修改,所以
i<20
一直成立,造成死循环; - 输出格式,每个0占一行,不是我们想要的在一行输出,print函数的end没有指定;
对代码进行修改:每次对i处理之后,对i进行加1操作;
代码试下:
i = 0
while i<= 20:
print(i, end=',')
i+=1
结果:0,1,2,3,4,5,6,7,8,9, ... ,19,20,
一个问题:如何主动退出循环?
2.break语句
break语句用户结束循环;
2.1 break基本语法:
break语句必须与while,for结合使用;
作用:跳出当前循环,基本语法:
wihle 表达式:
break
一般正确使用姿势:
while 表达式:
if 表达式1:
break
2.2 小练习1:
需求:循环从键盘循环读入键值,遇到q退出:
- 知识点:input函数,if语句,比较运算符,while语句,break语句;
代码实现:
while True:
value = input('请输入:')
if value == 'q':
print('退出while循环')
break
print(value)
结果:
请输入:w
w
请输入:q
退出while循环
3.continue语句:结束本次循环
3.1 continue语法:
continue语句必须与while,for循环配合使用,
作用:结束本次循环
3.2 小练习:
需求:0~20之间输出偶数;
知识点:if语句,while语句,continue语句;
代码实现:
i = 0
while i <= 20:
if i%2:
i += 1
continue
#continue后的代码不在执行,直接去执行while语句
print(i, end=',')
i += 1
print()
结果:0,2,4,6,8,10,12,14,16,18,20,
这个例子有点牵强,可以用来理解下continue。
while/else
while可以与else配合使用,基本逻辑:
直接来看一个例子:
i = 1
while i < 4:
print(i)
i+=1
else:
print("else i=", i)
结果:
1
2
3
else i= 4
注意:若while中使用break跳出循环,不会执行else中的逻辑代码;
对比例子:
i = 1
while i < 4:
print(i)
i+=1
break
else:
print("else i=", i)
结果:1;
以上就是while,break,continue相关知识点。
5 小练习:
5.1 练习1
找出2到10之间,每个数的除数,结果如下:
2:1
3:1
4:1 2
5:1
6:1 2 3
7:1
8:1 2 4
9:1 3
10:1 2 5
到这里,可以尝试挑战下自己,然后在继续后面内容。
题目分析:
- 获取2到10之间所有数;
- 两个数,x,y;x>y,如果x%y==0,则y是x的除数;
- 以6为例,一次对1到5求余,如果结果为0, 则这个数是6的除数;
- 使用两层while循环:第一层控制i值:[2,10],第二层控制j值:[1, i);
代码实现:
i= 2
while i <=10:
print('%d:'%i, end='')
j = 1
while j < i:
if i%j == 0:
pass
#print(j, end=' ')
j+=1
i+=1
print('')
这个程序还有优化空间,大家可以思考下,并将优化代码或者思路发布在评论区。
5.2 练习2
需求:找出1,2000之间闰年
题目分析:闰年判断条件:
- 能够被400整除;
- 能够被4整除且不能被100整除;
- 伪代码实现:
year = 100
如果 year%4==0 且 year%100!=0:闰年;
如果 year%400==0:闰年;
相关知识点:运算符,if语句
- 代码实现:
year = 200
if year %4 ==0 and year % 100:
print('%d is leap year'% year)
elif year % 400 == 0:
print('%d is leap year'% year)
else:
print('%d is nonleap year'% year)
- 最终代码实现:
找到1~2000之间所有闰年,需要从1开始判断,
输出格式:4 8 12 ... 400... 2000
基于上一步修改,代码实现:
year = 1
while year <= 2000:
if year %4 ==0 and year % 100:
print(year, end=' ')
elif year % 400 == 0:
print(year, end=' ')
year += 1
输出结果:
4 8 12 16 20 24 28
.......
1980 1984 1988 1992 1996 2000
总结:
- 理解while循环,重点:控制截止条件;
- break,continue必须与while,for配合使用;
- while中的代码段,注意缩进;
- 通过小练习锻炼编程思维模式;