跟我学Python从小白到入门之Part7——用户输入和whil
在前一篇文章 7.3 使用while循环来处理列表和字典001中,我们学习到了一个新的语句——While循环语句,while循环的整体结构是:
while 条件:
满足条件,执行循环体
循环体中,设置一个用于改变条件的语句
循环结束,执行While循环的后续语句
注意:从上一次的内容开始,前面我们使用的网页版编辑器就成为历史了,因为网页版不能接收input()语句请求的用户输入,所以我们必须安装电脑版的Python编辑器。
在电脑上安装Python编辑器,请看我的另一篇文章:最好用的Python编辑器——Pycharm之安装与设置
第七章包括以下内容:
Part 7 002
今天,我们开始学习第七章的第2部分
7.3 使用while循环来处理列表和字典
使用while循环来处理列表和字典我们前面学习过for循环,for循环是一种遍历列表的有效方式,但友情提醒+郑重提醒:在for循环中,千万不要修改列表,否则会导致Python难以跟踪列表中的元素。
在遍历列表的同时,还要对列表进行修改,就可使用我们今天要学习的while循环。
把while循环与列表和字典结合起来使用,就可以收集、存储和进行数据的大量输入,供以后查看和显示。
我们首先来看:
7.3.1 在列表之间移动元素
我们假设已经存在一个列表,这个列表中包含新注册的、但是还没有进行过验证的网站用户。
而, 我们经过验证之后 ,要把这些新注册的用户移到另一个已验证的用户列表中,如何进行这种操作呢?
简单的说,上述操作就是用while 循环加上pop()语句就可以实现了
即:转移数据 用 while 循环+pop()语句
因为后续课程中,会用到前面的某些已经存在的程序,所以从现在开始,我们给每段程序一个指定的程序名称,写在程序代码的左上角,扩展名是.py
yanzheng.py
# 假设已经存在一个待验证用户列表,我们命名为新用户列表new_users,首先我们创建一下这个列表
# 再创建一个用于存储已验证用户的空列表,命名为验证用户yanzheng_users
new_users = ['zhangsan', 'lisi', 'wangwu']
yanzheng_users = []
# 开始验证,并移动用户到已验证列表中,其中 z为临时存储弹出数据的中间变量
while new_users:
z = new_users.pop()
print("已验证新用户:" + z.title())
yanzheng_users.append(z)
# 以下语句用来显示所有已验证用户
print("\n已验证全体用户名单如下:")
for user in yanzheng_users:
print(user)
左右滑动可查看全部代码
while语句将不断循环运行,直到列表new_users变成空列表没有任何元素,这里pop()函数每次从new_users中弹出一个元素,append()函数把弹出的这个元素,追加到yanzheng_uses列表中。
未验证用户列表越来越短,验证用户的列表越来越长,未验证用户的列表为空后,结束while循环。
使用快捷键:CTRL + SHIFT + F10可查看到程序运行结果如下图所示:
7.3.2 删除包含特定值的所有列表元素
第三章我们学习了用remove语句来删除列表中的特定值,但是这个语句只能删除位于最前面的一个满足条件的值,如果列表中有多个相同的值,则就要用while循环语句,来逐一删除,直到不再有满足条件的值为止,终止循环。
pets.py
pets=['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
左右滑动可查看全部代码
使用快捷键:CTRL + SHIFT + F10可查看到程序运行结果如下图所示:
为了更清楚的表示出循环运行的效果,我们可以在循环中添加一个print语句,用来查看每次删除一个满足条件的数据之后,原列表的变化,修改如下:
pets=['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
print(pets)
左右滑动可以查看全部代码
使用快捷键:CTRL + SHIFT + F10可查看到程序运行结果如下图所示:
7.3.3 使用用户输入来填充字典
如果我们要收集用户输入的数据,并将其存储在一个字典中,就可以使用while循环,来提示用户输入信息,并用赋值语句将输入的数据,存储到字典中。
toupiao.py
#设置一个空字典toupiao用来存放调查结果
toupiao={}
#设置一个标志x,用来指出是否继续投票
x=True
while x:
name=input("\n请输入你的姓名:")
mountain=input("你喜欢爬哪座山?")
toupiao[name]=mountain
y=input("你希望再投一次票吗?(yes/no)")
if y=='no':
x=False
print("\n---投票结果---")
for name, mountain in toupiao.items():
print(name+"喜欢爬的山是"+mountain+"。")
左右滑动可以查看全部代码
使用快捷键:CTRL + SHIFT + F10可查看到程序运行结果如下图所示:
7.4 小结
在本章中,我们学习了:
如何在程序中使用input()来让用户提供信息;
如何处理文本和数字输入,以及如何使用while循环让程序按用户的要求不断地运行;
多种控制while循环流程的方式:设置活动标志、使用break语句以及使用continue语句;
如何使用while循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;
如何结合使用while循环和字典。
总结一下,while 的几种格式
- while x in y:
- while True:( +break)(+if)
- while 列表
脑洞大开时间
推荐一本很好的教材《Python编程:从入门到实践》,本系列网文教程中的文本结构均来自于此书,最后的思考题“脑洞大开时间”,就源自于原书中每一章最后的“动手试一试”的原文内容。
实体书的亚马逊网站购买地址,点击蓝色字跳转:Python编程 从入门到实践
7-8 熟食店:
创建一个名为sandwich_orders的列表,在其中包含各种三明治的名字;再创建一个名为finished_sandwiches的空列表。遍历列表sandwich_orders,对于其中的每种三明治,都打印一条消息,如I made your tuna sandwich,并将其移到列表finished_sandwiches。所有三明治都制作好后,打印一条消息,将这些三明治列出来。
7-9 五香烟熏牛肉(pastrami)卖完了:
使用为完成练习7-8而创建的列表sandwich_orders,并确保'pastrami'在其中至少出现了三次。在程序开头附近添加这样的代码:打印一条消息,指出熟食店的五香烟熏牛肉卖完了;再使用一个while循环将列表sandwich_orders中的'pastrami'都删除。确认最终的列表finished_sandwiches中不包含'pastrami'。
7-10 梦想的度假胜地:
编写一个程序,调查用户梦想的度假胜地。使用类似于“If you could visit one place in the world, where would you go?”的提示,并编写一个打印调查结果的代码块。
正文到此结束,谢谢你的时间 ,谢谢你的陪伴。
祝我们大家都在Python的世界玩耍愉快!
20171205晚22:48
下面是一个话唠的例行唠叨,与正文无关,可以不看。
PS:
-
这一篇已经停了一个多月了,先发布后,再来续写,不然就会一直拖着。20171205下午16:00到17:00
-
已经发现了自己的问题,就是,因为之前有群里的战友们说看不懂程序设计的文章,所以,我就不再写程序的文章,然后Python的书也就停下来一个半月没有看了。
因为一直依赖着“输出倒逼输入”,所以,没有输出就停下了看书,好象进入了一个程序的自动break阶段。
以后,不能这样,如果别人说看不懂,或者别人说写了没用,就停下自己前进的脚步,那就什么事情都做不成了。
确实要用输出倒逼输入。
但是,输入千万不能依赖输出。
记住。
下课后,学生都离开了,感觉大大的空空的机房,好适合写文章,停了快两个月的这一篇文章终于完成了,因为难得在学生机房安装IDE,回家再给出运行结果的截图,开心。
20171205下午17:35于学生机房410
智慧如你,不想点个赞再走咩?(•̀⌄•́)