for循环重新开始_13.另外一种常用的循环方式-while循环

0179f8a7cf270740ec07a77b0f485f0d.png
本节将探讨另外一种常见的循环方式“while循环”,关于“while循环”如何使用,以及与for循环有啥区别呢?

1.while语法格式

"while" 条件表达式 ":"
    程序块1
"else:"
    程序块2

格式说明:

  • “while”行(必须),在“while”及英文冒号之间设置条件表达式;例如,如下所示可用的条件表达式:
    • x<=100
    • x>0 and x<10
    • (x in 'abcd') or (x in '1234')
    • True
  • “程序块1”(必须),在上述while语句的下行,编写代码,注意缩进,这里简称“程序块1”;
  • “else:”与“程序块2”(可选)。注意“else:”与“while”对齐,两者是并列关系,在下行可以编写从属于else的程序块,注意缩进,这里简称“程序块2”。

执行流程说明:

  • 检验条件表达式,如果其为真(True)则执行“程序块1”;
  • 不断循环、重复执行上述操作;
  • 任何时候如果发现条件表达式的值为假(False):
    • 若不存在else分支,则直接退出while循环,整个while执行完毕;
    • 若存在else分支,则执行“程序块2”,此后退出并完成了整个while的执行。
  • “程序块1”中若存在break语句,其在执行时将直接退出while循环,不执行else分支(即使存在else分支的情况);
  • “程序块1”中若存在continue语句,其在执行时将跳过其后、“程序块1”中剩余的代码,直接返回到while行检验条件表达式,开始下一次循环。

2.while循环

sum = 0
i = 1
while (i <= 100):
    sum = sum + i
    i = i + 1
print("结果:",sum)

结果: 5050    

代码分析:

  • while条件表达式中用到的变量必须事先赋值定义,比如上述代码中的i在while语句前预先进行了赋值定义(需要注意这一点与for循环不一样);
  • 每一次进入while下面的程序块,都会把当前的i值累加到sum变量中;
  • 在while下面的程序块中,每次会把i值加1;
  • 当i=1时,条件表达式为True,执行while下面的程序块;
  • 当i=2时,依然为True,继续执行;
  • ...
  • 当i=100时,True,继续执行;
  • 当i=101时,条件表达式为False,退出并完成while的执行;
  • print输出sum的累加(从1、2一直累加到100)结果;
  • 很显然,通过在while下面程序块中不断地调整i的值,来不断地更新、影响while条件表达式的判断,否则,要是i值始终保持为1不变的话,此while则为死循环了,执行不出来了。

3.while-else

num = 99 #设置一个大于1的自然数
# 以下代码判断num是否为质数,
# 若为合数的话,输出其最大约数。
d = num // 2 #地板除,即取整,并把d初始化成可能的最大约数。
while d > 1:
    if num % d == 0:#看余数是否为0,即是否能整除
        print(f'{num}的最大约数是{d}!')
        break #既然最大约数已经找出来了,事情办完了,可以退出了
    d = d - 1 #否则,把d减小,看接下来的、更小的数是否可能为约数。
else:
    print(f'{num}是质数!')

99的最大约数是33!

代码分析:

  • 设置不同num时,代码的执行情况如下:
    • 当num为99时输出结果为:99的最大约数是33!
    • 当num为98时输出结果为:98的最大约数是49!
    • 当num为17时输出结果为:17是质数!
  • 当找到最大约数时,通过break语句,直接退出整个while循环(不会执行while下面程序块的其他剩余语句,也不会执行else分支);
  • 当d减小为1时,表明没能找到大于1的其他约数,此时的d已经无法满足while条件表达式的要求(值为False),跳转至else下面程序块,打印输出该数为质数。

4.While死循环

while True:
    num = int(input("请输入一个数字(0至10,其中0表示退出):"))
    if (num < 0) or (num > 10):
        print ("输入错误,请重新输入!")
        continue

    if num == 0:
        print("程序结束!")
        break
    else:
        print (f"你输入的数字是: {num},继续...")

请输入一个数字(0至10,其中0表示退出): 1
你输入的数字是: 1,继续...
请输入一个数字(0至10,其中0表示退出): 2
你输入的数字是: 2,继续...
请输入一个数字(0至10,其中0表示退出): 3
你输入的数字是: 3,继续...
请输入一个数字(0至10,其中0表示退出): 12
输入错误,请重新输入!
请输入一个数字(0至10,其中0表示退出): 23
输入错误,请重新输入!
请输入一个数字(0至10,其中0表示退出): 0
程序结束!

代码分析:

  • “while True”是很典型的死循环语句,经常用在程序的主流程及事件处理场合,至于什么时候退出while,则由里面的代码根据具体的业务应用来决定;
  • 上述代码会反复提示输入一个0至10的数:要是输入了不在此范围内的数,则提示错误要求重新输入;要是输入了0,则break退出while循环;正确输入了范围内的数(0除外),则print输出此数,然后继续提示输入下一个数;
  • 解释一下Python内置的input函数,其用于接受通过键盘输入的数据(以“Enter”键确认并结束输入),并把输入的数据作为字符串类型返回,传入的参数仅用作提醒显示;
  • 键盘输入的数据转换成int后,赋值给num变量,当输入的数据不在0至10的范围内时,执行continue语句,忽略其后的语句,直接返回到while循环条件表达式的判断处,开始下一轮循环;
  • 当num为0时,通过break语句跳出并完成while死循环的执行。

5.while和for循环的异同

  • 很多情况下,两者是可以互换的,根据使用的方便性择优选择;
  • 一般情况下,for循环适用于已知循环次数的循环(要循环的队列,或者说列表、迭代是明确的,当然,迭代也可以是无限的循环),while循环适用于未知循环次数的循环;
  • 需要注意的是:for循环语句中的变量不用事先赋值定义,而while循环条件表达式中的变量必须要事先赋值定义;
  • 在for循环里可以方便地使用、访问可迭代对象;而死循环则一般采用while。

青少年、零基础、初学者Python编程从入门到精通,“老马带小马 一块学Python”编程系列。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值