首页 > 其他分享 >流程控制之while循环

流程控制之while循环

时间:2023-05-26 13:11:06浏览次数:41  
标签:代码 else break while 循环 print 流程

欢迎各位学术交流,有不懂,发现错误的,或想与博主沟通的都的可以评论留言
一、while循环语法

Python中的while循环用于重复执行一段代码,直到指定的条件不再满足为止。其基本语法为:

while 条件:
    代码块

当条件成立时,执行代码块中的代码;然后重新判断条件是否成立,如果仍然成立,则继续执行;如果不成立,则跳出循环。

二、while + break

在while循环中,我们可以使用break语句来提前退出循环。具体实现如下:

i = 0
while i < 10:
    print(i)
    if i == 5:
        break
    i += 1

在上面的代码中,变量i从0开始递增,当i等于5时,执行break语句,提前退出循环。因此,循环只会执行6次,输出的结果为:

0
1
2
3
4
5
三、while + continue

在while循环中,我们还可以使用continue语句来跳过当前迭代并进入下一次迭代。具体实现如下:

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    print(i)

在上面的代码中,变量i从1开始递增,当i是偶数时,执行continue语句,跳过当前迭代并进入下一次迭代。因此,循环只会输出1、3、5、7、9这五个奇数。

四、while循环的嵌套

在Python中,我们可以在while循环中进行嵌套,实现复杂的重复执行功能。其基本语法为:

python
while 条件1:
代码块1
while 条件2:
代码块2
当条件1成立时,进入第一个while循环,并执行其中的代码块1;然后进入第二个while循环,并根据条件2的成立情况执行其中的代码块2;再回到第一个while循环继续判断条件1是否成立,以此类推。

五、tag控制循环退出

在Python中,我们可以使用tag技巧来更灵活地控制循环的退出。具体实现如下:

i = 0
tag = False

while i < 10:
    j = 0
    while j < 10:
        if (i * j) % 7 == 0:
            tag = True
            break
        j += 1
    if tag:
        break
    i += 1

print(i, j)

在上面的代码中,变量i和j分别从0开始递增,在内层循环中,判断两数之积是否能被7整除,如果成立,则设置tag变量为True,并执行内层循环的break语句,跳出内层循环。在外层循环中,判断tag变量是否为True,如果是,则执行外层循环的break语句,跳出循环;否则继续执行外层循环并递增变量i,以此类推。这样就可以灵活地控制循环的退出。

六、while + else

Python中的while循环还支持一个可选的else分支,当循环正常结束时(即不是通过break语句提前退出循环),会执行else分支中的代码。其基本语法为:

while 条件:
    代码块
else:
    循环结束后的代码

当条件成立时,进入循环并执行其中的代码块;然后重新判断条件是否成立,如果仍然成立,则继续执行;如果不成立,则继续执行else分支中的代码。

七、练习

7.1 练习1:猜数字游戏

题目描述:

编写一个猜数字的游戏程序,程序生成一个1~100之间的随机数,用户可以根据提示输入猜测的数字,如果猜对了则输出“恭喜你,猜对了!”并结束游戏;如果猜错了,则根据猜测值与实际值之间的大小关系给出“猜大了”或“猜小了”的提示,然后让用户继续猜测。

解题思路:

根据题目描述和要求,我们可以使用while循环实现该游戏,具体代码如下:

import random

answer = random.randint(1, 100)

while True:
    guess = int(input("请猜一个数字(1~100):"))
    if guess == answer:
        print("恭喜你,猜对了!")
        break
    elif guess > answer:
        print("猜大了,请重新猜测!")
    else:
        print("猜小了,请重新猜测!")

首先,我们使用Python的random模块生成一个1~100之间的随机数。然后,使用无限循环实现重复猜数字的功能,在每次循环中让用户输入猜测的数字,并与实际数字进行比较。如果猜对了,则输出“恭喜你,猜对了!”并使用break语句提前退出循环;如果猜错了,则根据大小关系提示猜大了或猜小了,并让用户继续猜测。

7.2 练习2:求素数

题目描述:

编写一个程序,输出100以内的所有素数。

解题思路:

根据素数的定义,我们可以从2开始递增,判断每一个数是否是素数。具体实现如下:

for num in range(2, 101):
    for i in range(2, num):
        if num % i == 0:
            break
    else:
        print(num)

首先,range(2, 101)表示从2开始到100结束(不包括101)的所有整数。然后,使用两层for循环,对于每个num值,从2到num-1依次测试是否能被整除,如果能被整除,则跳出内层循环;否则执行else分支中的代码,即输出该数值。最终,输出的结果为所有100以内的素数。

标签:代码,else,break,while,循环,print,流程
From: https://www.cnblogs.com/aidd/p/17434453.html

相关文章

  • 深度解析 slab 内存池回收内存以及销毁全流程
    在上篇文章《深入理解slabcache内存分配全链路实现》中,笔者详细地为大家介绍了slabcache进行内存分配的整个链路实现,本文我们就来到了slabcache最后的一部分内容了,当申请的内存使用完毕之后,下面就该释放内存了。在接下来的内容中,笔者为大家介绍一下内核是如何将内存......
  • DO循环中处理
    DATA:LV_INDEX TYPE SY-INDEX,      LV_STR TYPE TEXT10."遍历3组数据DO3TIMES.LV_INDEX=LV_INDEX+1.CASELV_INDEX.WHEN1.LV_STR='01'.WHEN2.LV_STR='02'.WHEN3.LV_STR......
  • WebGL几种常用服务图层的制作流程
    当前,越来越多的用户开始使用三维GIS平台SuperMapiClent3DforWebGL,对于新用户来说最常见的两个问题就是:1.为什么打开场景看不到数据?2.为何范例能实现的效果,我的数据就不行了?而造成这两个问题绝大多数的原因是数据处理不当,本文将讲解制作WebGL常用服务图层的流程及注意事项。 ......
  • 软件开发流程
    软件开发流程/生命周期软件生命周期软件定义(需求讨论确定、原型效果图制作)、开发实施、测试与bug修复、上线、服务与更新、停服。以我当前的经验或者认知,软件服务公司给别人做产品的具体流程大致应该是这这样的:需求分析阶段(第一版功能、不可缺少的必要功能)。//沟通,与确定。......
  • 客户至上,服务至极 ——优维服务流程标准化体系
    ◎如何用服务打动客户?在思考这个问题之前,首先我们要了解做好服务最难的是什么?和机器不一样,流水线的作业出来的东西都是一样的,因为人们完成了手工作业向工业流水线作业的转变。而服务,是需要人来参与的,当由不同的人来完成某件事的时候,就会出现差异。所以,服务最难的就是交付物的一致......
  • 恒生电子笔试(笔试流程,笔试介绍,题型,以往笔试题)
    2019网申渠道已开放,全国行程将在9月份正式开启完整流程:网申-笔试-2轮面试(群面+单面)-收到实习录取通知笔试流程:通过宣讲会,然后现场笔试。一般早上9点开始笔试,笔试时间两小时,大概1个多小时完成答题。笔试后一天或一周,收到人力通知参加面试笔试介绍:1.参加笔试的学生分A-F卷,每套卷子......
  • 宏任务,微任务,事件循环
    参考参考例子帮助理解  Promise的回调函数属于异步任务,会在同步任务之后执行。但是,Promise的回调函数不是正常的异步任务,而是微任务(microtask)。它们的区别在于,正常任务追加到下一轮事件循环,微任务追加到本轮事件循环。这意味着,微任务的执行时间一定早于正常任务。  ......
  • springmvc执行流程和视图解析器
    代码在course1中1. springmvc请求的处理流程  9 1)发起some.do 2)tomcat(web.xml--url-pattern知道 *.do的请求给DispatcherServlet) 3)DispatcherServlet(根据springmvc.xml配置知道 some.do---doSome()) 4)DispatcherServlet把some.do转发个MyController.doSome()方法 5)框架......
  • tracee源码初探(二)TCP处理流程
    handleEvents(ctx),processNetCaptureEvents(若开启Capture.Net)协程一直常驻,并等待netCapChannel消息通知.当有事件传过来时,程序先看该事件是否需要处理,也就是说tracee是上报所有事件的,然后过滤来处理事件。在tracee.go中的initBPF函数里t.bpfModule.InitPerfBuf( "net_cap_......
  • 使用react-flow制作流程图
    1.react-flow react-flow是一个用于构建基于节点的应用程序的库。这些可以是简单的静态图或复杂的基于节点的编辑器。同时react-flow支持自定义节点类型和边线类型,并且它附带一些组件,可以查看缩略图的MiniMap和悬浮控制器Controls.2.react-flow安装npminstallreac......