编程小案例
本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点:
条件选择
循环
列表
字典
键盘输入
屏幕输出
编写程序 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人推荐