扎实基础深刻篇(六):while循环带动生产力

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

为此,你须要使用wile循环让程序不断地运行,直到指定的条件不知足为止。程序员

注意:在学习循环的路上,必定要学会刹车!app

 

在进入本篇博客学习以前,咱们须要解决一下上篇博客留下来的做业:编辑器

建立一个名为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人.
  他所处省份的省会是西安.ui

 

在学习while以前,咱们应该接触过input的相关知识,为了更好地学习后面的while循环,我将快速介绍一下input()的知识:spa

一.input()code

概念:函数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恰好是我最喜欢的数字!")
        continue
    num+=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+=1
        continue
    num+=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+=1
        break
    num+=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决心....

只是做者会在好久之后再更新了,由于我也要去学习,当我完全掌握函数和类等基础知识的时候,我会再次归来。

建议大家每过一段时间就复习以往全部博客,确保把这些基础知识变成长期记忆。

相关文章
相关标签/搜索