6.循环语句-while

上一节介绍了,条件判断语句,这节我们来看下循环语句:while

主要内容:

  • 小目标:掌握循环语句:while;
  • 主要内容:while, break, continue,while语句与if语句使用,闰年判断;

1.循环语句:while

1.1 基本语法:

while 表达式:
    代码1

while语句说明:

while:关键字;
表达式:条件表达式;

while执行过程:

  1. 判断表达式值是否为真;
  2. 如果条件表达式为真,执行代码1;
  3. 如果条件表达式为假,退出循环;

基本逻辑:

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,根本停不下来;

分析问题:

  1. i的初始值为0,在循环中我们没有对i进行修改,所以i&lt;20一直成立,造成死循环;
  2. 输出格式,每个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循环配合使用,
作用:结束本次循环

  • 基本语法:
    while 表达式:
    ...
    continue
    ...
  • 一般使用姿势:
    while 表达式:
    if 表达式x:
        continue
    code1

    基本逻辑如下图:

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 

到这里,可以尝试挑战下自己,然后在继续后面内容。

题目分析:

  1. 获取2到10之间所有数;
  2. 两个数,x,y;x>y,如果x%y==0,则y是x的除数;
  3. 以6为例,一次对1到5求余,如果结果为0, 则这个数是6的除数;
  4. 使用两层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之间闰年
题目分析:闰年判断条件:

  1. 能够被400整除;
  2. 能够被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中的代码段,注意缩进;
  • 通过小练习锻炼编程思维模式;

版权声明:
作者:WaterBear
链接:https://l-t.top/2859.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录