在本篇博客中,你将学习如何让程序不断地运行,让用户能够根据需要输入信息,并在程序中使用这些信息。

为此,你需要使用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循环带动生产力相关推荐

  1. Java基础入门篇之For循环

    一.for循环语句 1.在java中一般用在次数确定情况下.如果要进行重复性指令执行,可以用for循环.基本语法如下所示: for(初始化表达式:循环条件:操作表达式){ c1:执行语句 ...... ...

  2. 扎实基础深入篇(七):函数和类没那么复杂

    一.函数(def) 函数,对于函数这个概念,大家都想必很熟悉,函数广泛应用于数学,科技,医疗等等众多行业. 那么,在Python中,函数就是带名字的代码块. 函数最显现的作用就是将一个代码块封装起来, ...

  3. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  4. redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作

    Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...

  5. Vue基础篇六:Vue使用JSX进行动态渲染

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  6. EGE基础入门篇(六):基本图形

    EGE专栏:EGE专栏 上一篇:EGE基础入门篇(五):窗口简单操作 下一篇:EGE基础入门篇(七):组合图形 一.EGE提供的基本图形 EGE绘制图形相关库函数文档 https://xege.org ...

  7. 《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课

    一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分 ...

  8. C语言基础入门48篇_18_使用循环移动游戏人物(屏幕符号运动、while(1){}进行实时响应,if(表达式){},switch(表达式){},windows的API及API进行自行封装使)

    本篇介绍使用循环语句实现指定符号的坐标移动,使用到了while(1){}进行实时响应,if(表达式){},switch(表达式){},windows中封装的API并对API进行自行封装使用. 1.实现 ...

  9. 〖Python零基础入门篇㉚〗- Python中的循环

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

最新文章

  1. GitLab 8.3.3 发布 开源代码管理
  2. 如何查看SE16N修改的表的记录
  3. sklearn朴素贝叶斯分类器_朴素贝叶斯原理
  4. 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
  5. linux中文本查找命令,Linux常用的文本查找命令 find
  6. STM32与SHT1X温湿度传感器通讯
  7. Adobe 2022软件安装错误代码107解决办法
  8. 文档在项目开发中的作用
  9. 【NOIP2005】【Luogu1051】谁拿了最多奖学金
  10. 成为高级程序员的 10 个步骤
  11. 【常用软件下载地址】java开发官方资源下载网址大全(持续更新)
  12. C++ gbk与utf8互转
  13. 在职研究生论文如何查重?
  14. hbase1.2.1配置kerberos
  15. 信用卡积分能兑换现金,靠谱吗?
  16. 随机测试数据生成 与 Pandas迭代方法性能对比
  17. 消费升级背景下零食行业发展报告_品牌升级与全渠道协同赋能 来伊份上半年营收21.36亿元...
  18. VCC、 VDD、VEE、VSS 电压理解
  19. 【Linux】【CentOS】CentOS 网络管理
  20. 波特(Baud)与比特(bit)换算详解

热门文章

  1. 链接脚本使用AT加载地址的总结
  2. [Layui]layui输入框如何设置禁止输入
  3. 毕淑敏:人生本没有意义,每个人必须为自己的人生确定意义
  4. 在Atlas 200DK上体验DVPP(2)DVPP、AIPP和OM推理
  5. 网上不能买烟,你知道吗?
  6. 自定义ListPreference弹出Dialog背景
  7. 站在三岔路口的全面屏手机,最终会走向何方?
  8. Maya2013安装失败:Installing Microsoft Visual C++ 2005
  9. 《我的前半生》这么狗血,但靳东玩转“大数据”却帅的很!
  10. 骁龙7gen1和骁龙870哪个好