扎实基础深入篇(六):while循环带动生产力
在本篇博客中,你将学习如何让程序不断地运行,让用户能够根据需要输入信息,并在程序中使用这些信息。
为此,你需要使用wile循环让程序不断地运行,直到指定的条件不满足为止。
注意:在学习循环的路上,一定要学会刹车!
在进入本篇博客学习之前,我们需要解决一下上篇博客留下来的作业:
创建一个名为cities的字典,其中将三个城市名用作键,对于每个城市的所属省份、人口数、是否为省会等等创建一个字典作为值。
然后以更为直观的形式打印出这些信息在输出窗口。
cities = {"咸宁": {'省份': '湖北','人口': 6158080,'省会': '武汉',},"宁波": {'省份': '浙江','人口': 11760024,'省会': '杭州',},'宝鸡': {'省份': '陕西','人口': 1003285,'省会': '西安',}}for city, city_info in cities.items():shenfen = city_info['省份']renkou = city_info['人口']shenghui = city_info['省会']print("\n" + city+ " is in " + shenfen + ".")print(" 这座城市的人口有 " + str(renkou) + "人.")print(" 他所处省份的省会是"+shenghui+".")
输出结果:
咸宁 is in 湖北.
这座城市的人口有 6158080人.
他所处省份的省会是武汉.
宁波 is in 浙江.
这座城市的人口有 11760024人.
他所处省份的省会是杭州.
宝鸡 is in 陕西.
这座城市的人口有 1003285人.
他所处省份的省会是西安.
在学习while之前,我们应该接触过input的相关知识,为了更好地学习后面的while循环,我将快速介绍一下input()的知识:
一.input()
概念:函数input()让程序暂停,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中。
message=input("请告诉我,你想说什么:") print(message)
输出情况(加粗的部分是键盘输入的内容):
请告诉我,你想说什么:我最帅
我最帅
使用函数input()编写一个清晰的程序:
message=input("请告诉我,你想说什么:") a="我听到你说:\n"+message print(a)
输出情况(加粗的部分是键盘输入的内容):
请告诉我,你想说什么:你是猪
我听到你说:
你是猪
如果提示过长的时候,应该怎么处理?例:
message=input("尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统,现只能转人工服务,你愿意留下你的电话吗:")
可以看到,提示用户输入的语句过长,这让代码不够好看,在系统中也展现不直观,所以采用的方法应该是:
将提示输入的语句存储到一个变量中,使用换行符号:
tips="尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统," tips+="\n现只能转人工服务,你愿意留下你的电话吗:" message=input(tips) print(message)
输出结果(加粗的部分是键盘输入的内容):
尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统,
现只能转人工服务,你愿意留下你的电话吗:123456789
123456789
处理输入的数据学会使用int()转换
在python3中,使用input()函数输入的任何东西都是字符串类型,其中不乏数字,善用int()进行转换:
math=input("请输入一个数字让系统计算它的平方数:") value=int(math)**2 print("转换后的平方数为:",value)
输出结果(加粗的部分是键盘输入的内容):
请输入一个数字让系统计算它的平方数:9
转换后的平方数为: 81
虽然我们学习的是python3,但市场上很多项目还是pyton2,我们需要了解到关于python2的input(),有什么不同:
在python2中,提示用户输入的应该使用raw_input(),都被转为字符串类型。
如果你直接输入input()获取用户输入,python2会解读为python代码,所以往往会报错。
二.while循环
(1).while的基础
①不会刹车的司机不是好司机
在使用while循环的时候,新手程序员常常喜欢一写完while就去运行,往往不可避免进入无限循环的可能,
导致终端在一直快速打印造成程序崩溃。
当你不幸陷入无限循环的时候,若不考虑损失,建议直接关闭编辑器,此方法最为直接迅速。
也可以按Ctrl+C终止,也可以关掉显示程序输出的终端窗口。
所以在使用while的时候,一定要善于设置循环的条件,套上一个限制,彻底对无限循环的可能斩草除根。
②让用户选择何时退出
现在来一段极为简单的循环示例:
num=0 while num<5:print(num)num+=1
输出结果:
0
1
2
3
4
解释:设置num的初始值0,然后在while门口,发现num的值<5,满足条件获取进入资格,然后按照里面的代码办事,出来时num已经变成了1,
这时候,while彷佛有一种魔力,又像梦境的轮回一样,也没有任何的东西阻止它,于是自行开启了月光宝盒,
再次回到了while的门口,发现它依旧小于5,于是又进去了,反反复复地轮回。
直到当它的值成了5,回到while的门口时,发现不再满足进入的条件,这时候梦醒了。
在下面的博客中,不再对while代码进行解释,请大家自行努力理解!
现在实现一个简单的复读机,当输入退出复读机时退出程序:
message=input("来试试复读机吧!说出你想说的话:\n") while message != "退出复读机":print(message)message=input("来试试复读机吧!说出你想说的话:\n")
输出结果(加粗的部分是键盘输入的内容):
来试试复读机吧!说出你想说的话:
我真帅
我真帅
来试试复读机吧!说出你想说的话:
你真丑
你真丑
来试试复读机吧!说出你想说的话:
我真没
我真没
来试试复读机吧!说出你想说的话:
退出复读机
③在循环中使用continue
在使用while循环的过程中,有些被循环出来的条件是特殊条件,那么此时你也想做特殊处理,
使用continue能够让你实现特殊处理的过程,并再回到while,并不影响循环的进行。
实现一个简单的while让你更加了解continue:
num=0 while num<5:print(num)if num==3:print("3刚好是我最喜欢的数字!")continuenum+=1
输出结果:
0
1
2
3
3刚好是我最喜欢的数字!
3刚好是我最喜欢的数字!
3刚好是我最喜欢的数字!
无限循环!!!!!!
什么?示例代码都弄成无限循环了,那还教个P!
不着急,这是很多新手写while代码时百分之90都会遇到的误区,并没有彻底理解continue的作用。
我在上面加粗了一段话,这段话非常重要:
当你执行continue的时候,要知道,它是直接回到了while,而直接无视了剩下的代码,恰好剩下的代码对循环极为重要,
在上面的示例代码中,对3进行continue处理后,它错过了num+=1的代码,直接回到了while,造成无限循环,一直停留在3。
正确的示例:
num=0 while num<5:print(num)if num==3:print("3刚好是我最喜欢的数字!")num+=1continuenum+=1
输出结果:
0
1
2
3
3刚好是我最喜欢的数字!
4
希望大家通过一错一对的代码示范加深对continue的理解。
④使用break退出循环
有了上面的continue教学之后,再来理解break就不难了:
break也可以说是特殊处理的手段,但是特殊处理之后,直接退出了while循环。
不多说,还是一样的示例来理解:
num=0 while num<5:print(num)if num==3:print("晦气,这是我最讨厌的数字,我走了!")num+=1breaknum+=1
输出结果:
0
1
2
3
晦气,这是我最讨厌的数字,我走了!
(2).while来处理列表和字典
①在列表之间移动元素
我们知道,对于布尔表达式来说,空列表,空元组,空集合等空值,都是False。
如果一个列表list_1含有元素,它的布尔值是True,那么while list_1是不是就是while True,
那么,如果这个列表突然变成了空列表,while list_1是不是变成了while False,循环就终止了?
从这个思路出发,我们有下列代码实现:
print("公司给出了一批游戏测试名单,要求你全部测试一遍。") print("这些游戏是穿越火线,QQ飞车,英雄联盟,地下城与勇士,枪火游侠。") game_list=['穿越火线','QQ飞车','英雄联盟','地下城与勇士','枪火游侠'] finish_list=[] while game_list:game=game_list.pop(0)print("现在你要测试的游戏是:",game)state=input("你正在测试中……测试完毕时请按回车")print(game,"测试完毕,请进入下一个游戏")game=game+"已测试完毕"finish_list.append(game) print(finish_list)
输出结果:
公司给出了一批游戏测试名单,要求你全部测试一遍。
这些游戏是穿越火线,QQ飞车,英雄联盟,地下城与勇士,枪火游侠。
现在你要测试的游戏是: 穿越火线
你正在测试中……测试完毕时请按回车
穿越火线 测试完毕,请进入下一个游戏
现在你要测试的游戏是: QQ飞车
你正在测试中……测试完毕时请按回车
QQ飞车 测试完毕,请进入下一个游戏
现在你要测试的游戏是: 英雄联盟
你正在测试中……测试完毕时请按回车
英雄联盟 测试完毕,请进入下一个游戏
现在你要测试的游戏是: 地下城与勇士
你正在测试中……测试完毕时请按回车
地下城与勇士 测试完毕,请进入下一个游戏
现在你要测试的游戏是: 枪火游侠
你正在测试中……测试完毕时请按回车
枪火游侠 测试完毕,请进入下一个游戏
['穿越火线已测试完毕', 'QQ飞车已测试完毕', '英雄联盟已测试完毕', '地下城与勇士已测试完毕', '枪火游侠已测试完毕']
②使用用户输入来填充字典
本次示例代码结合了上期博客所讲到的知识点,能够起到复习巩固的作用:
responses={}#设置一个标志,指出调查是否继续 polling_active=True while polling_active:#提示输入被调查者的名字和回答name=input("\n你的名字是什么?")response=input("你最喜欢的游戏是什么?")#将答卷存储在字典中responses[name]=response#看看是否还能有人参与调查repeat=input("你愿意另一个人来回答问题吗?")if repeat =="no":polling_active=False #调查结束,显示结果 print for name,response in responses.items():print(name+"最喜欢的游戏是:"+response+".")
输出结果(加粗的部分是键盘输入的内容):
你的名字是什么?master
你最喜欢的游戏是什么?穿越火线
你愿意另一个人来回答问题吗?yes
你的名字是什么?paopao
你最喜欢的游戏是什么?QQ宠物
你愿意另一个人来回答问题吗?no
master最喜欢的游戏是:穿越火线.
paopao最喜欢的游戏是:QQ宠物.
本篇博客的内容就到这,布置的作业也非常简单:
编写一个三种没完没了的循环,并写出造成循环的原因,并学会终止无限循环的手段。
在往后的博客中,将会讲到函数,类,对象等知识,当你看到这句话时,代表你有着决定入门python决心....
只是作者会在很久以后再更新了,因为我也要去学习,当我彻底掌握函数和类等基础知识的时候,我会再次归来。
建议你们每过一段时间就复习以往所有博客,确保把这些基础知识变成长期记忆。
转载于:https://www.cnblogs.com/Masterpaopao/p/10332049.html
扎实基础深入篇(六):while循环带动生产力相关推荐
- Java基础入门篇之For循环
一.for循环语句 1.在java中一般用在次数确定情况下.如果要进行重复性指令执行,可以用for循环.基本语法如下所示: for(初始化表达式:循环条件:操作表达式){ c1:执行语句 ...... ...
- 扎实基础深入篇(七):函数和类没那么复杂
一.函数(def) 函数,对于函数这个概念,大家都想必很熟悉,函数广泛应用于数学,科技,医疗等等众多行业. 那么,在Python中,函数就是带名字的代码块. 函数最显现的作用就是将一个代码块封装起来, ...
- Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛
Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...
- redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作
Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...
- Vue基础篇六:Vue使用JSX进行动态渲染
系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...
- EGE基础入门篇(六):基本图形
EGE专栏:EGE专栏 上一篇:EGE基础入门篇(五):窗口简单操作 下一篇:EGE基础入门篇(七):组合图形 一.EGE提供的基本图形 EGE绘制图形相关库函数文档 https://xege.org ...
- 《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课
一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分 ...
- C语言基础入门48篇_18_使用循环移动游戏人物(屏幕符号运动、while(1){}进行实时响应,if(表达式){},switch(表达式){},windows的API及API进行自行封装使)
本篇介绍使用循环语句实现指定符号的坐标移动,使用到了while(1){}进行实时响应,if(表达式){},switch(表达式){},windows中封装的API并对API进行自行封装使用. 1.实现 ...
- 〖Python零基础入门篇㉚〗- Python中的循环
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
最新文章
- GitLab 8.3.3 发布 开源代码管理
- 如何查看SE16N修改的表的记录
- sklearn朴素贝叶斯分类器_朴素贝叶斯原理
- 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
- linux中文本查找命令,Linux常用的文本查找命令 find
- STM32与SHT1X温湿度传感器通讯
- Adobe 2022软件安装错误代码107解决办法
- 文档在项目开发中的作用
- 【NOIP2005】【Luogu1051】谁拿了最多奖学金
- 成为高级程序员的 10 个步骤
- 【常用软件下载地址】java开发官方资源下载网址大全(持续更新)
- C++ gbk与utf8互转
- 在职研究生论文如何查重?
- hbase1.2.1配置kerberos
- 信用卡积分能兑换现金,靠谱吗?
- 随机测试数据生成 与 Pandas迭代方法性能对比
- 消费升级背景下零食行业发展报告_品牌升级与全渠道协同赋能 来伊份上半年营收21.36亿元...
- VCC、 VDD、VEE、VSS 电压理解
- 【Linux】【CentOS】CentOS 网络管理
- 波特(Baud)与比特(bit)换算详解
热门文章
- 链接脚本使用AT加载地址的总结
- [Layui]layui输入框如何设置禁止输入
- 毕淑敏:人生本没有意义,每个人必须为自己的人生确定意义
- 在Atlas 200DK上体验DVPP(2)DVPP、AIPP和OM推理
- 网上不能买烟,你知道吗?
- 自定义ListPreference弹出Dialog背景
- 站在三岔路口的全面屏手机,最终会走向何方?
- Maya2013安装失败:Installing Microsoft Visual C++ 2005
- 《我的前半生》这么狗血,但靳东玩转“大数据”却帅的很!
- 骁龙7gen1和骁龙870哪个好