Python基础之while循环

news2025/7/23 6:42:39

一:while语法

while 条件:
     代码1     
     代码2     
     代码3
     ....

while的运行步骤:
步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止

二、while的使用

当我们取钱的时候,输入密码,有三次机会可以输入,判断密码是否正确,只要有一次输入正确,就可以进行取钱,三次机会都输入错误,则把卡锁了。

如果不用while,用if语句的话:

# 第一次输入
pwd = int(input("请输入密码:"))
# 判断密码是否正确
if pwd == 123456:
    print("密码输入正确,可以取钱了")
else:
    print("密码输入错误,还有2次机会")

# 第二次输入
pwd = int(input("请输入密码:"))
# 判断密码是否正确
if pwd == 123456:
    print("密码输入正确,可以取钱了")
else:
    print("密码输入错误,还有1次机会")

# 第三次输入
pwd = int(input("请输入密码:"))
# 判断密码是否正确
if pwd == 123456:
    print("密码输入正确,可以取钱了")
else:
    print(f"密码输入错误,卡锁了")

代码太冗余了,基本上都是相同的代码。

1:使用while

count = 3
while count>0:
    pwd = int(input("请输入密码:"))
    # 判断密码是否正确
    if pwd == 123456:
        print("密码输入正确,可以取钱了")
    else:
        print(f"密码输入错误,还有{count-1}次机会")
        count -= 1

上面的例子,在3次之内密码输入正确后,还是会进入到循环中,继续要求输入密码执行语句,直到count=0,才会结束循环。

2:while+break的使用

在密码输入正确后,使用break关键字来结束循环,就可以直接跳出循环,不在执行循环语句。

count = 3
while count>0:
    pwd = int(input("请输入密码:"))
    # 判断密码是否正确
    if pwd == 123456:
        print("密码输入正确,可以取钱了")
        break
    else:
        print(f"密码输入错误,还有{count-1}次机会")
        count -= 1

3:while循环嵌套+break的使用

如果使用了while循环嵌套,想要推出每一层循环,就需要在每一层都加上break

count = 3
while count > 0:       # 第一层循环
    pwd = int(input("请输入密码:"))
    # 判断密码是否正确
    if pwd == 123456:
        print("密码输入正确,可以取钱了")
        while True:      # 第二层循环
            cmd = input("输入命令:")
            if cmd == "quit":
                print("退出")
                break    # 用于结束第二层循环
            print(f"运行命令:{cmd}")
        break           # 用于结束第一层循环
    else:
        print(f"密码输入错误,还有{count-1}次机会")
        count -= 1

4:while循环嵌套+tag的使用

count = 0
tag = True
while tag:       # 第一层循环
    pwd = int(input("请输入密码:"))
    # 判断密码是否正确
    if pwd == 123456:
        print("密码输入正确,可以取钱了")
        while tag:      # 第二层循环
            cmd = input("输入命令:")
            if cmd == "quit":
                print("退出")
                tag = False     # tag赋值为False,while循环中所有的条件都变成False
                break    # 用于结束第二层循环
            print(f"运行命令:{cmd}")
        break           # 用于结束第一层循环
    else:
        print(f"密码输入错误,这是第{count+1}次输入")
        count += 1

5:while循环+continue的使用

# 打印1到10的偶数
num = 0
while num <= 10:
    num += 1
    if num % 2 != 0:
        continue   
        # 结束掉本次循环,本次循环continue之后的代码都不会被执行,而是直接进入下一次循环
    print(num)

即:当num=1时,满足if num %2 != 0,则执行continue语句,不执行print(num),并且进入下一次循环

注意:break与continue的区别

break用于结束本层循环,碰到break,后面的代码不会执行,本层循环直接结束掉。

continue用于结束本次循环,碰到continue,后面的代码不会执行,直接进入下一次循环。

例如:将上面例子中的continue改为break,则num=1时,满足if num %2 != 0,则执行break语句。就直接把整个循环都结束掉了,不会再继续执行了。

6:while循环+else的使用

在while循环的后面,可以跟else语句,当while 循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以可以用else来验证,循环是否正常结束。

count = 0
while count < 3:
    print(f"第{count}次循环")
    count += 1
else:
    print("while循环正常结束")

结果:

 当被break中止:

count = 0
while count < 3:
    print(f"第{count}次循环")
    count += 1
    if count == 2:
        break
else:
    print("while循环正常结束")

 输出结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通用缓存存储设计实践

目录介绍 01.整体概述说明 1.1 项目背景介绍1.2 遇到问题记录1.3 基础概念介绍1.4 设计目标1.5 产生收益分析 02.市面存储方案 2.1 缓存存储有哪些2.2 缓存策略有哪些2.3 常见存储方案2.4 市面存储方案说明2.5 存储方案的不足 03.存储方案原理 3.1 Sp存储原理分析3.2 MMKV存储…

【数据挖掘】4、关联分析:Apriori、FP-Growth 算法、买面包是否也爱买啤酒

文章目录一、概念1.1 支持度1.2 置信度1.3 提升度二、Apriori 算法2.1 频繁项集的定义2.2 算法工作原理三、FP-Growth 算法3.1 算法步骤3.1.1 创建项头表3.1.2 构造 FP 树3.1.3 通过 FP 树挖掘频繁项集3.2 手动推导3.2.1 计算单一项的频率&#xff08;支持度计数&#xff09;3.…

shusheng007编程手记

[版权申明] 非商业目的注明出处可自由转载 出自&#xff1a;shusheng007 文章目录概述工具篇IntelliJ IDEA在Idea中下载源码时&#xff0c;报无法下载源码PostmanPost请求被识别成Get请求Linux开启关闭防火墙开放端口关闭端口如何修复磁盘Nginx如何使用docker来安装Nginx概述 …

VMware虚拟网络编辑桥接/NAT/仅主机模式详解

VMware虚拟网络编辑 安装VMware后 默认虚拟网络设置&#xff1a; VMnet0&#xff1a;桥接模式 VMnet1&#xff1a;仅主机 VMnet8&#xff1a;NAT模式 可以打开VMware的虚拟网络适配器查看 NAT模式 NAT模式借助虚拟NAT设备和虚拟DHCP服务器&#xff0c;使得虚拟机可以联网…

掌握Swagger3自动化生成接口文档完成后端提效

文章目录OpenApi规范Swagger3快速上手Swagger3使用Swagger3.x常用注解讲解和配置Api 模块配置ApiOperation 接口配置ApiParam 方法参数配置ApiIgnore 忽略此接口ApiModel()和ApiModelProperty()ApiResponse描述接口响应注意可能出现的问题OpenApi规范 开放API规范&#xff08;…

Java内存屏障简介

简介 内存屏障是插入两个CPU命令之间的命令&#xff0c;禁止处理器命令的重新排序(如屏障)&#xff0c;以确保有序性。此外&#xff0c;为了达到屏障的效果&#xff0c;在处理器写入、读取值之前&#xff0c;将主机的值写入缓存&#xff0c;清空无效的队列&#xff0c;保障可见…

C++函数重载及其背后的原理

写在前面 先说说我的状态吧&#xff0c;五一假期五天假&#xff0c;这些天都在玩&#xff0c;很少学习&#xff0c;我不是后悔&#xff0c;也没必要&#xff0c;本来假期就是为了让自己放松.我唯一要反思看到别人在学,我心里也想学但是却做不到,这是我的缺点,后面我会克服的.尽…

运维提质增效,有哪些办法可以做

凡是代码&#xff0c;难免有 bug。 开发者们的日常&#xff0c;除了用一行行代码搭产品外&#xff0c;便是找出代码里的虫&#xff0c;俗称 debug。 随着移动互联网的快速发展&#xff0c;App 已经成为日常生活中不可或缺的一部分。但是在开发者/运维人员的眼里简直就是痛苦的…

使用R语言包clusterProfiler做KEGG富集分析时出现的错误及解决方法

使用enrichKEGG做通路富集分析时&#xff0c;一直报错&#xff1a;显示No gene can be mapped....k <- enrichKEGG(gene gene, organism "hsa", pvalueCutoff 1, qvalueCutoff 1)但是之前用同样的基因做分析是能够成功地富集到通路&#xff0c;即便是网上的数据…

Appium+Python连接真机、跳过登录页、Unexpected error while obtaining UI hierarchy问题

Appium连接真机 使用数据线连接电脑&#xff0c;然后选择文件传输方式 打开手机设置拉至底部&#xff0c;点击关于手机&#xff0c;连续点击7次版本号打开开发者模式 点击设置中的系统与更新&#xff0c;找到开发者选项----> 打开USB调试即可 在终端中输入adb devices确定…

c语言经典例题-数组的使用

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 选择法排序&#xff1a; 题目&#xff1a; 本关任务&#xff1a;使用选择法排序&#xff08;http://t.csdn.cn/…

统计学 一元线性回归

统计学 一元线性回归 回归&#xff08;Regression&#xff09;&#xff1a;假定因变量与自变量之间有某种关系&#xff0c;并把这种关系用适当的数学模型表达出来&#xff0c;利用该模型根据给定的自变量来预测因变量 线性回归&#xff1a;因变量和自变量之间是线性关系 非线…

看板组件:Bryntum Task Board JS 5.3.0 Crack

一个超级灵活的看板组件&#xff0c;Bryntum Task Board 是一个灵活的看板 Web 组件&#xff0c;可帮助您可视化和管理您的工作。 功能丰富 任务板非常灵活&#xff0c;允许您完全自定义卡片、列和泳道的渲染和样式。借助丰富的 API&#xff0c;您甚至可以在运行时打开或关闭功…

MSE 诊断利器上线

作者&#xff1a;子葵 背景 在日常开发和生产环境中&#xff0c;可能会遇到由于网络或者其他因素导致客户端连接 MSE 集群出现异常&#xff0c;此时需要排查集群以及客户端状态&#xff0c;通常需要通过文档查询对应的异常解释来定位问题&#xff0c;排查问题的链路比较长&am…

JNI内通过参数形式从C/C++中传递string类型数据至Java层

目录 0 前言 1 string类型参数形式传值 2 测试和结果 0 前言 类似之前我写过的两篇文章&#xff1a;一篇介绍了在JNI中基础类型int的传值方式&#xff1b;一篇详细梳理了在JNI层中多维数组的多种传值方式。 JNI内两种方式从C/C中传递一维、二维、三维数组数据至Java层详细…

如何实现接口幂等性

1 什么是幂等 幂等操作的特点是一次或者任意多次执行所产生的影响均与一次执行的影响相同&#xff0c;不会因为多次的请求而产生不一样的结果。换句话说&#xff0c;就是我使用相同的请求参数&#xff0c;去请求同一个接口&#xff0c;不管请求多少次获取到的响应数据应该是一…

JUC并发编程——Park Unpark

一、Park & Unpark 1.1 基本使用 它们是 LockSupport 类中的方法 // 暂停当前线程 LockSupport.park(); // 恢复某个线程的运行 LockSupport.unpark(暂停线程对象)先 park 再 unpark import lombok.extern.slf4j.Slf4j; import java.util.concurrent.locks.LockSuppor…

Baumer工业相机堡盟相机如何使用PnPEventHandler实现相机掉线自动重连(C++新)

项目场景&#xff1a; Baumer工业相机堡盟相机传统开发包BGAPI SDK进行工业视觉软件整合时&#xff0c;常常需要将SDK中一些功能整合到图像处理软件中&#xff0c;方便项目的推进使用&#xff1b; 在项目的图像处理任务中&#xff0c;可能会因为一些硬件比如线缆网卡的原因导…

五点CRM系统核心功能是什么

很多企业已经把CRM客户管理系统纳入信息化建设首选&#xff0c;用于提升核心竞争力&#xff0c;改善企业市场、销售、服务、渠道和客户管理等几个方面&#xff0c;并进行创新或转型。CRM系统战略的五个关键要点是&#xff1a;挖掘潜在客户、评估和培育、跟进并成交、分析并提高…

传输层--UDP协议

目录 一.补充知识 1.1传输层​ 1.2端口号 1.3netstat 二.UDP 2.1UDP协议格式 2.2UDP如何将有效载荷上交给上层 2.3UDP如何将报头与有效载荷进行分离&#xff1f; 2.4理解报头 2.5.UDP协议特点 2.6UDP缓冲区 2.6基于UDP的应用层协议 一.补充知识 1.1传输层 之前介绍…