编程小案例

本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点:

条件选择

循环

列表

字典

键盘输入

屏幕输出

编写程序 addr-manage.py 实现通讯录管理系统,通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:

增加联系人: 用户输入姓名、地址、电话等信息,将信息保存在一个列表中

列出联系人: 打印输出所有联系人的信息

查询联系人: 用户输入联系人姓名,打印输出该联系人的信息

删除联系人: 用户输入联系人姓名,从通讯录中删除该联系人

通过命令行界面实现以上功能,程序 addr-manage.py 运行时首先打印一个菜单,如下所示:

C:> python addr-manage.py

1. create person

2. list all persons

3. query person

4. delete person

5. quit

Enter a number(1-5):

总共有 5 个选项,用户输入对应的数字选择相应的功能,如下表所示:

数字选项

功能描述

1. create person

增加联系人

2. list all persons

列出联系人

3. query person

查询联系人

4. delete person

删除联系人

5. quit

退出通讯录程序

1. 程序框架

1.1 数据结构

程序使用字典描述一个联系人,假设某个联系人的信息如下:

姓名

地址

电话

张三

南京

12306

使用字典描述该联系人如下:

>>> person = {'name': '张三', 'address': '南京', 'phone': '12306'}

字典有三个键:name、address、phone

对应的值分别为:张三、南京、12306

程序将所有联系人信息存储在列表中,即通讯录是一个列表、列表的元素是字典。假设通讯录中有两个人,它们的信息如下所示:

姓名

地址

电话

张三

南京

12306

李四

王五

10086

使用列表描述通讯录如下:

>>> zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}

>>> liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}

>>> persons = [zhangSan, liSi]

在第 1 行,变量 zhangSan 的类型是一个字典,描述了张三的信息

在第 2 行,变量 liSi 的类型是一个字典,描述了李四的信息

在第 3 行,persons 是一个列表,存储了 zhangSan 和 liSi 两个联系人

上面的代码为了易于理解,使用了 3 行代码描述了通讯录。也可以使用 1 行代码描述该通讯录,代码如下:

>>> persons = [{'name': '张三', 'address': '南京', 'phone': '12306'}, {'name': '李四', 'address': '北京', 'phone': '10086'}]

1.2 程序框架

程序框架由两个主要部分:

使用全局变量 persons 保存所有联系人的信息

使用循环处理程序逻辑

首先打印功能菜单

然后获取用户输入的选择

根据用户的选择执行对应的功能

persons = []

while True:

print('1. create person')

print('2. list all persons')

print('3. query person')

print('4. delete person')

print('5. quit')

choice = input('Enter a number(1-5):')

if choice == '1':

pass

elif choice == '2':

pass

elif choice == '3':

pass

elif choice == '4':

pass

elif choice == '5':

pass

else:

print('Invalid choice')

在第 1 行,创建一个空列表 persons,persons 记录所有联系人的信息

在第 3 行,创建一个 while 死循环

在第 3 行至第 8 行,打印通讯录功能菜单

在第 9 行,使用 input() 函数获取用户输入的选择

在第 11 行至第 22 行,根据 choice 选择执行相应的功能

在第 12 行、第 14 行、第 16 行、第 18 行、第 20 行,在相应的功能实现处使用 pass 表示空操作,在下面的小节中将逐步填充

2. 增加联系人

本小节实现增加联系人的功能,如下所示:

if choice == '1':

name = input('name: ')

address = input('address: ')

phone = input('phone: ')

person = {'name': name, 'address': address, 'phone': phone}

persons.append(person)

在第 1 行,如果 choice == "1’,则执行增加联系人的功能

在第 2 行,获取用户输入的 name

在第 3 行,获取用户输入的 address

在第 4 行,获取用户输入的 phone

在第 5 行,根据用户输入的 name、address、phone 创建一个字典,用于描述该联系人

在第 6 行,将联系人加入到 persons 中

3. 列出联系人

本小节实现列出所有联系人的功能,如下所示:

elif choice == '2':

for person in persons:

print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

在第 1 行,如果 choice == "2’,则执行列出所有联系人的功能

在第 2 行,遍历列表 persons,循环变量 person 是一个字典

在第 3 行,打印变量 person 的内容

对每个联系人打印输出一行,假设通讯录中已经存储了张三和李四两个联系人,输出如下:

C:> python addr-manage.py

1. create person

2. list all persons

3. query person

4. delete person

5. quit

Enter a number(1-5): 2

张三,南京,12306

李四,北京,10086

在第 7 行,用户选择执行功能 2

在第 8 行,打印联系人张三的信息

在第 9 行,打印联系人李四的信息

查询联系人

本小节实现查询联系人的功能,如下所示:

elif choice == '3':

name = input('name: ')

for person in persons:

if person['name'] == name:

print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

在第 1 行,如果 choice == "3’,则执行查询联系人的功能

在第 2 行,获取用户输入的 name

在第 3 行,遍历列表 persons,循环变量 person 是一个字典

在第 4 行,如果用户输入的 name 和循环访问 person 的 name 相同,则表示找到指定的 person

在第 5 行,打印变量 person 的内容

4. 删除联系人

本小节实现删除联系人的功能,如下所示:

elif choice == '4':

name = input('name: ')

for person in persons:

if person['name'] == name:

persons.remove(person)

break

在第 1 行,如果 choice == "4’,则执行删除联系人的功能

在第 2 行,获取用户输入的 name

在第 3 行,遍历列表 persons,循环变量 person 是一个字典

在第 4 行,如果用户输入的 name 和循环访问 person 的 name 相同,则表示找到指定的 person

在第 5 行,使用方法 persons.remove(person), 从 persons 中删除元素 person

在第 6 行,退出 for 循环

5. 退出程序

本小节实现退出程序的功能,如下所示:

elif choice == '5':

break

在第 1 行,如果 choice == "5’,则执行退出程序的功能

在第 2 行,执行 break 语句退出程序的主循环

6. 完整的程序

persons = []

while True:

print('1. create person')

print('2. list all persons')

print('3. query person')

print('4. delete person')

print('5. quit')

choice = input('Enter a number(1-5):')

if choice == '1':

name = input('name: ')

address = input('address: ')

phone = input('phone: ')

person = {'name': name, 'address': address, 'phone': phone}

persons.append(person)

elif choice == '2':

for person in persons:

print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

elif choice == '3':

name = input('name: ')

for person in persons:

if person['name'] == name:

print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

elif choice == '4':

name = input('name: ')

for person in persons:

if person['name'] == name:

persons.remove(person)

break

elif choice == '5':

break

else:

print('Invalid choice')

原文地址:https://blog.csdn.net/q7825103/article/details/105379906

文章来源与用户投稿或网络采集,如果您是本文的作者,发现版权或转载方式问题请右侧邮箱联系管理员。

623人推荐

抢沙发

评论

共同学习,写下你的评论

姓名

电子邮件

个人主页

完成

取消

python程序实例教程基础-编程小案例相关推荐

  1. python程序实例教程基础-Python程序设计案例教程——从入门到机器学习(微课版)...

    第1章Python语言快速入门1 1.1Python的安装与配置1 1.2运行Python程序2 1.2.1运行Python的方式2 1.2.2Python编写规范4 1.3编写简单的Python程序 ...

  2. python程序实例教程基础-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  3. python程序实例教程基础-Python程序设计实例教程

    图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...

  4. python程序实例教程基础-python基础教程第三版源代码

    [实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...

  5. python程序实例讲解_Python编程之属性和方法实例详解

    本文实例讲述了Python编程中属性和方法使用技巧.分享给大家供大家参考.具体分析如下: 一.属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用 ...

  6. Java基础编程小案例-买飞机票

    买飞机票 需求: 机票价格按照淡季旺季.头等舱和经济舱收费.输入机票原价.月份和头等舱或经济舱. 机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月) ...

  7. python代码实例-python程序实例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...

  8. python课堂实例,Python电子教案2 1 Python程序实例解析课堂

    <Python电子教案2 1 Python程序实例解析课堂>由会员分享,可在线阅读,更多相关<Python电子教案2 1 Python程序实例解析课堂(41页珍藏版)>请在人人 ...

  9. python爬虫实例教程之豆瓣电影排行榜--python爬虫requests库

    我们通过requests库进行了简单的网页采集和百度翻译的操作,这一节课我们继续进行案例的讲解–python爬虫实例教程之豆瓣电影排行榜,这次的案例与上节课案例相似,同样会涉及到JSON模块,异步加载 ...

最新文章

  1. 2017-2018-1 20155230 《信息安全系统设计基础》第二周课堂实验
  2. 代理服务器地址在哪里看_看完这篇还不了解Nginx,那我就没你办法了
  3. 前端学习(1706):前端系列javascript之应用场景
  4. 高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)...
  5. java反射随意值_Java反射总结
  6. PostgreSQL函数(存储过程)----笔记
  7. MYSQL数据库中触发器禁用、启用、查询
  8. cat EOF file
  9. CentOS 6.3 编译安装搭建LNMP(迎接端午节,首发)
  10. 线性判别分析(Linear Dicriminant Analysis)参数推导记录备忘
  11. 人工智能十大流行算法,通俗易懂讲明白
  12. 备用计算机机房管理制度,计算机机房管理制度
  13. ubuntu16.04+Titan Xp的驱动官网上找不到
  14. ftp服务器上传文件卡顿,FlashFXP连接FTP服务器很慢,原因可能是这样
  15. vivo解析包时出现问题解决
  16. ipad显示连接不到商店服务器,iPad无法连接App Store 打不开怎么办
  17. 公交线路查询系统 C++实现 图
  18. python元素分类_在python中对列表的元素进行分类
  19. SQL Assistant 12.x Crack
  20. day19TreeSet类

热门文章

  1. nodejs入门教程之http的get和request简介及应用
  2. mysql和SQLYog工具使用
  3. 浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
  4. day04_07-三个函数的区别
  5. 为gridview“删除”列添加确认对话框
  6. 零基础学python看什么书-转行零基础该如何学习python?很庆幸,三年前的我选对了...
  7. python基础语法 第0关print-徐州鼓楼高校邦数据科学通识课【Python基础语法】答案...
  8. python最适合做什么生意-面试了57位数据分析师,我发现牛逼的人都有这4个特质...
  9. python界面图片-python图形用户界面(六):可视化给图片添加上文字
  10. python快速编程入门教程-半小时带你快速入门Python编程,Python快速入门教程