python中的while循环

没有循环时,想打印0-100之间的数字,则需要循环多次,例:

print(0)
print(1)
print(2)
print(3)
...
print(99)

但是使用循环的话,就不会有那么麻烦

while 循环

while 这个单词有“在……时”的含义,while 循环自然也可以被理解为“在……时进行循环”。确实是这样,在 while 循环中,计算机在 满足条件 时 重复执行 某段代码,直至条件不满足再终止循环。

while 循环的执行流程与 if 语句有相似之处,语法规则与 if 语句也是很像的。下图是一个典型的 while 循环,运行后会逐行输出 0、1、2.....100:

i = 0
while i < 100:print(i)i = i + 1

这里拓展一个小知识点,i = i + 1 可以简写成 i += 1。所以上面的代码等价于:

i = 0
while i < 3:print(i)i += 1

编程练习

等待蟹黄堡的客人一共有 5 位,海绵宝宝要为每一位客人都做一份美味蟹黄堡。你能用循环修改下面的代码,帮助海绵宝宝简化自己的工作流程吗?

i = 1
# 定义变量 i,用来表示客人的序号,初始值为 1print('为第' + str(i) + '位客人做一份蟹黄堡')
# 给当前客人做一份蟹黄堡
i += 1
# i 值加 1,招待下一位客人print('为第' + str(i) + '位客人做一份蟹黄堡')
i += 1print('为第' + str(i) + '位客人做一份蟹黄堡')
i += 1print('为第' + str(i) + '位客人做一份蟹黄堡')
i += 1print('为第' + str(i) + '位客人做一份蟹黄堡')
i += 1

简化后结果为:

i = 1
# 定义变量 i,用来表示客人的序号,初始值为 1
while i < 6:print('为第' + str(i) + '位客人做一份蟹黄堡')i += 1

死循环

我们先来看看出错的代码吧,对比一下之前能正确做出 5 个蟹黄堡的代码,你发现了什么问题?

# 正确的代码:
i = 1
while i <= 5:print('为第' + str(i) + '位客人做一份蟹黄堡')i += 1# 派大星的代码:
i = 1
while i <= 365:print('给派大星做一个蟹黄堡')

没错,派大星写的循环体里少了一句 i += 1,这就说明,在代码运行过程中,i 值始终没有被改变,一直都能满足 i <= 365 的条件。循环条件永远为真,那 print('给派大星做一个蟹黄堡') 这句指令自然也会一直执行啦。

所以,蟹黄堡就会永无止境地生成,换句话说,这个循环,停不下来 了。在编程中,这种无法靠自身控制终止的程序称为 死循环

问题的答案很简单:确保循环条件不会永远成立,也就是说,我们要保证 while 后面跟的 循环条件 最终可以被转化为 False

我们让计算机在打印句子之后,还要对 i 值加 1,这样就能保证 i 值一直在增加,直至 i = 6,不再满足 i <= 5 的条件,程序就会跳出循环:

i = 1
while i <= 5:print('为第' + str(i) + '位客人做一份蟹黄堡')i += 1

⚠️循环中,切不可缺少‘i’这个属性值,防止遇到死循环

编程练习一

海绵宝宝有一只心爱的宠物蜗牛,名叫小蜗。海绵宝宝出门去蟹堡王上班了,小蜗就写了一段代码,判断几个小时后海绵宝宝才能回家。

但这个代码的运行结果却是……海绵宝宝永远都不会回家了!小蜗以为自己被海绵宝宝抛弃了,非常伤心。你能帮它修改这段代码,让它看到正确的答案吗?

time_left = 10
# 海绵宝宝每天需要工作 10 个小时
while time_left > 0:print('距离海绵宝宝回家还有' + str(time_left) + '个小时')print('海绵宝宝回家了!')# 预期逐行输出:
# 距离海绵宝宝回家还有10个小时
# 距离海绵宝宝回家还有9个小时
# ...
# 距离海绵宝宝回家还有1个小时
# 海绵宝宝回家了!# 实际输出:
# 距离海绵宝宝回家还有10个小时
# 距离海绵宝宝回家还有10个小时
# 距离海绵宝宝回家还有10个小时
# ...(死循环中)

解答为:

time_left = 10
# 海绵宝宝每天需要工作 10 个小时
while time_left > 0:print('距离海绵宝宝回家还有' + str(time_left) + '个小时')time_left -= 1
print('海绵宝宝回家了!')

看到正确的输出,小蜗终于开心起来了,谢谢你安慰了它!

编程练习二

我们给代码加了一句 i += 1,拯救了死循环。这里我们拓展一下思维,想想看,一个循环中不包含形如 i += 1 的代码,那它是否一定会进入死循环呢?

下面这段代码会是死循环吗?告诉我你的判断吧~

number = 0while number != 345:number = int(input('猜猜我想到的数字?'))

这段代码不会进入死循环哦!不劳烦 i += 1 出场,input() 函数也可以不断地给 number 重新赋值。如果输入的是“345”,那 number != 345 这个循环条件就不成立啦,循环当然会自动终止。

再次重申一下,避免死循环需要我们保证 循环条件是否可以转变为 False,形如 i += 1 的代码并不是必要条件,认真控制循环条件才是避免出错的不二法门!

关于 while 循环的方方面面就说到这里,现在你又成功掌握一种新的语句了,怎么样,循环是不是很有趣?

编程练习三

掌握了 while 循环的知识,我们结合之前列表的相关知识来做一个彩票抽奖机!

中奖号码由 6 个 0-99 之间的随机数(包括 0 和 99)构成。中奖的朋友,可以获得蟹堡王年卡,每天都能吃到免费的美味蟹黄堡!

老师为你定义好了一个 get_num() 函数,功能是返回 1 个 0~99 之间的随机整数。用法如下所示:

# 假设生成的随机整数是 55

# 打印出返回值为 55
print(get_num())
# 输出:55

# 将这个随机整数保存到变量里
num = get_num()

请你写一个 while 循环,重复 6 次 调用 get_num() 函数的操作,并把每次获得的随机数保存到列表 lottery 里。

提示:还记得给列表尾部追加元素要使用 append() 方法吗?

# 有了下面这行代码,get_num() 函数才有效
# 千万不要手滑删除啦!
from random import randint# 不需要修改函数,按照提示调用即可
def get_num():# randint(0, 99) 随机生成 0-99 之间的数,包括 0 和 99return randint(0, 99)lottery = []# 请你补全代码
# 用循环获得 6 个随机数存到 lottery 里作为中奖号码
i = 0
while i <= 6:num = get_num()lottery.append(num)i += 1# 打印出最终的 lottery 列表
print('本期彩票中奖号码为:' )
print(lottery)

学习巩固

1/3对折对折再对折

一张纸的厚度大约是 0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13 米)?

请用 循环 完成这个练习,并打印出 需要对折n次,n 是纸的厚度大于等于 8848.13 米时已经对折的次数。

# 珠穆朗玛峰高8848.13米  88481.3厘米  884813毫米(mm)
mount = 8848130
# 纸张 0.08mm
paper = 0.08
# 请补全代码
i= 0.08
int = 0
while i < mount:# print(i)i = i * 2int += 1
print('需要对折' + str(int) + '次')# 答案为27次

2/3黄帮主逃课了吗

我们可以用 while 循环来依次访问列表中的元素,循环终止条件可以设置为 i < len(列表名称)

其中,i 值对应的是列表的索引,len(列表名称) 获取的是列表长度,每访问一个元素,我们就让索引值 i 加 1,直到索引值与列表长度相同,就终止循环。

name_list = ['红小贝','黄小贝','紫小贝']

i = 0
while i < len(name_list):
  print(name_list[i])
  i += 1
# 逐行输出:红小贝 黄小贝 紫小贝

我们用这个方法来完成一个有趣的练习吧。今天上课时,班主任发现班上少了一名同学,她猜最淘气的黄帮主可能没来上学。

到校的学生姓名已经按照到校时间记录在考勤表 name_list 中了,请你用上面的方法完善 checking() 函数,帮助班主任判断一下黄帮主有没有逃课。如果逃课了就打印出 黄帮主逃课了,如果没有,就打印出 黄帮主是第n个到校的,n 是他到校的顺序。

name_list = ['红小贝','黄小贝','蓝小贝','绿小贝','青小贝','紫小贝','黄帮主']def checking(name):global name_listi = 0while i < len(name_list):if name == name_list[i]:print(name + '是第' + str(i + 1) + '个到校的')returni += 1print(name + '逃课了')
checking('黄帮主')

3/3头疼的数学课

黄帮主终于在铃声前到达了学校,但第一节课就是让他头疼的数学课。

今天的课堂作业是计算 1 到 100 各个数的和,黄帮主想偷懒,于是拿出了 Python 编辑器。

请你帮黄帮主完善函数 counting(),用 while 循环打印出从 1 加到 100 的和。

def counting(n):# 请补全代码i = 0sum = 0while i <= 100:sum += ii += 1print(sum)
counting(100)

下篇预告:python中的for 循环

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI智能分析技术与安防视频融合当前面临的困难与挑战

人工智能与安防视频的融合为现代安全领域带来了革命性的变化&#xff0c;提高了安全管理水平、降低了管理成本并为用户提供了更加便捷和高效的服务。随着技术的不断进步和应用场景的不断拓展&#xff0c;未来人工智能与安防的融合将展现出更加广阔的发展前景。然而&#xff0c;…

Linux 服务查询命令(包括 服务器、cpu、数据库、中间件)

Linux 服务查询命令&#xff08;包括 服务器、cpu、数据库、中间件&#xff09; Linux获取当前服务器ipLinux使用的是麒麟版本还是cenos版本Linux获取系统信息Linux查询nignx版本 Linux获取当前服务器ip hostname -ILinux使用的是麒麟版本还是cenos版本 这个文件通常包含有关L…

Vue进阶之Vue无代码可视化项目(三)

Vue无代码可视化项目 项目初始化store的使用DataSourceView.vuestores/counter.ts开发模式按钮store/editor.tsLayoutView.vue导航条安装图标iconpackage.jsonstore/debug.tssrc/components/AppNavigator.vueAppNavigator.ts:AppNavigator.vue:theme样式theme/reset.csstheme/v…

CRM系统主要是干什么?CRM系统主要功能和作用

什么是CRM 系统&#xff1f;CRM系统到底是干什么的&#xff1f;不同的企业人员该如何利用CRM去解决他们的问题等等&#xff0c;问题太多了&#xff0c;今天来为大家详细介绍。 干货满满&#xff0c;建议收藏&#xff01;&#xff01; 首先第一个问题&#xff0c;什么是CRM系统…

智能监控技术助力山林生态养鸡:打造智慧安全的养殖新模式

随着现代科技的不断发展&#xff0c;智能化、自动化的养殖方式逐渐受到广大养殖户的青睐。特别是在山林生态养鸡领域&#xff0c;智能化监控方案的引入不仅提高了养殖效率&#xff0c;更有助于保障鸡只的健康与安全。视频监控系统EasyCVR视频汇聚/安防监控视频管理平台在山林生…

国产操作系统上Vim的详解01--vim基础篇 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统上Vim的详解01–vim基础篇 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产操作系统上使用Vim的详解文章。Vim是一款功能强大且高度可定制的文本编辑器&#xff0c;广泛应用于编程和日常文本编辑中。…

FreeRTOS基础(九):FreeRTOS的列表和列表项

今天我们将探讨FreeRTOS中的一个核心概念——列表&#xff08;List&#xff09;和列表项&#xff08;List Item&#xff09;。在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;任务的管理和调度是至关重要的&#xff0c;而FreeRTOS使用列表来实现这一功能。列表可以说…

oracle数据回显时候递归实战

太简单的两篇递归循环 orcale 在项目里递归循环实战 先看资产表T_ATOM_ASSET结构 看业务类别表T_ATOM_BUSI_CATEGORY结构 问题出现 页面显示 实际对应的归属业务分类 涉及到oracle递归实战(这里不会如何直接在atomAsset的seelct里面处理递归回显) 直接在实现层看atomAs…

NVIDIA - QPU

转载自 What Is a QPU? ( 2022 年 7 月 29 日 里克梅里特 https://blogs.nvidia.com/blog/what-is-a-qpu/ 文章目录 一、概述二、那么&#xff0c;什么是 QPU&#xff1f;三、量子处理器如何工作&#xff1f;四、制作量子比特的多种方法五、光的量子比特六、简单的芯片&#x…

李廉洋:6.2黄金原油持续走低,下周一行情走势分析及策略。

黄金消息面分析&#xff1a;尽管通胀数据显示出稳定迹象&#xff0c;但美联储对此仍持谨慎态度。美国商务部经济分析局发布的数据显示&#xff0c;4月PCE物价指数月率维持在0.3%&#xff0c;而消费者支出的增长放缓至0.2%&#xff0c;低于3月份的0.7%。这表明&#xff0c;尽管通…

CSAPP Lab07——Malloc Lab完成思路

等不到天黑 烟火不会太完美 回忆烧成灰 还是等不到结尾 ——她说 完整代码见&#xff1a;CSAPP/malloclab-handout at main SnowLegend-star/CSAPP (github.com) Malloc Lab 按照惯例&#xff0c;我先是上来就把mm.c编译了一番&#xff0c;结果产生如下报错。搜索过后看样子应…

SpringBoot:手动创建应用

Spring提供了在线的Spring Initialzr在线创建Spring Boot项目&#xff0c;为了更好的理解Spring Boot项目&#xff0c;这里我们选择手动创建。 1.新建Web应用 1.1 生成工程 首先要做是创建一个Java项目&#xff0c;这里我们选择使用Maven来支持&#xff0c;使用archetype:ge…

React + SpringBoot开发用户中心管理系统

用户中心项目搭建笔记 技术栈 前端技术栈 “react”: “^18.2.0”,ant-design-pro 后端技术栈 SpringBoot 2.6.x 项目源码地址 https://gitee.com/szxio/user-center 前端项目搭建 快速搭建一个后端管理系统项目框架 初始化 antDesignPro 官网&#xff1a; https://…

众汇:外汇狙击指标如何使用?

对于投资者来说&#xff0c;我们各位交易的目的是什么?WeTrade众汇认为那就是盈利。所以来说有一个指标对各位投资者来说那是相当有帮助的。这是因为对于交易者而言&#xff0c;利用这些指标可以快速识别盈利的买卖时机。当我们选择一个指标之后&#xff0c;深入了解其适用范围…

luckysheet的使用

前言 公司新需求要一个在线的excel编辑器 一、luckysheet是什么&#xff1f; LuckySheet是一款基于Web的在线表格组件&#xff0c;一款纯前端类似excel的在线表格&#xff0c;功能强大、配置简单、完全开源结合Vue3可以实现数据的动态展示和编辑&#xff0c;为用户提供良好的…

2024年四川省三支一扶报名流程图解✅

2024年四川省三支一扶报名流程图解✅ &#x1f534;时间安排 1、报名时间&#xff1a;5月31日—6月4日17:00 2、资格初审时间&#xff1a;5月31日—6月5日17:00 3、准考证打印时间&#xff1a;6月25日—6月29日 4、笔试时间&#xff1a;6月30日 5、笔试成绩&#xff1a;7…

C++:特殊类设计和四种类型转换

一、特殊类设计 1.1 不能被拷贝的类 拷贝只会放生在两个场景中&#xff1a;拷贝构造函数以及赋值运算符重载&#xff0c;因此想要让一个类禁止拷贝&#xff0c;只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98&#xff1a; 1、将拷贝构造函数与赋值运算符重载只…

【Unity Shader入门精要 第12章】屏幕后处理效果(三)

1. Bloom效果 Bloom描述的是图像中较亮的部分向周围一定范围内发生扩散&#xff0c;造成一种朦胧的效果&#xff0c;常用于表现游戏中的灯光或隧道出口之类的效果。 下面的例子将实现一个简单的Bloom效果&#xff0c;其原理是&#xff1a; 将原始图像中较亮&#xff08;灰度…

2023-2025年最值得选择的Java毕业设计选题大全:1000个热门选题推荐✅✅✅

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

密码加密及验证

目录 为什么需要加密&#xff1f; 密码算法分类 对称密码算法 非对称密码算法 摘要算法 DigestUtils MD5在线解密工具原理 实现用户密码加密 代码实现 为什么需要加密&#xff1f; 在MySQL数据库中&#xff0c;我们常常需要对用户密码、身份证号、手机号码等敏感信息进…