Python从小白到入门

跟我学Python从小白到入门之Part7——用户输入和whil

2017-12-05  本文已影响31人  且听风吟闲翻书

在前一篇文章 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可查看到程序运行结果如下图所示:

转移数据 用 while 循环+pop()语句实现

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可查看到程序运行结果如下图所示:

pets.py运行结果

为了更清楚的表示出循环运行的效果,我们可以在循环中添加一个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可查看到程序运行结果如下图所示:

每次执行都删除一个cat

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 的几种格式

  1. while x in y:
  2. while True:( +break)(+if)
  3. 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:

  1. 这一篇已经停了一个多月了,先发布后,再来续写,不然就会一直拖着。20171205下午16:00到17:00

  2. 已经发现了自己的问题,就是,因为之前有群里的战友们说看不懂程序设计的文章,所以,我就不再写程序的文章,然后Python的书也就停下来一个半月没有看了。

因为一直依赖着“输出倒逼输入”,所以,没有输出就停下了看书,好象进入了一个程序的自动break阶段。

以后,不能这样,如果别人说看不懂,或者别人说写了没用,就停下自己前进的脚步,那就什么事情都做不成了。

确实要用输出倒逼输入。
但是,输入千万不能依赖输出。

记住。

下课后,学生都离开了,感觉大大的空空的机房,好适合写文章,停了快两个月的这一篇文章终于完成了,因为难得在学生机房安装IDE,回家再给出运行结果的截图,开心。

20171205下午17:35于学生机房410


智慧如你,不想点个赞再走咩?(•̀⌄•́)

上一篇 下一篇

猜你喜欢

热点阅读