本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点:
编写程序 addr-manage.py 实现通讯录管理系统,通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:
通过命令行界面实现以上功能,程序 addr-manage.py 运行时首先打印一个菜单,如下所示:
C:\> python addr-manage.py1. create person2. list all persons3. query person4. delete person5. quit
Enter a number(1-5):
总共有 5 个选项,用户输入对应的数字选择相应的功能,如下表所示:
数字选项 | 功能描述 |
---|---|
1. create person | 增加联系人 |
2. list all persons | 列出联系人 |
3. query person | 查询联系人 |
4. delete person | 删除联系人 |
5. quit | 退出通讯录程序 |
程序使用字典描述一个联系人,假设某个联系人的信息如下:
姓名 | 地址 | 电话 |
---|---|---|
张三 | 南京 | 12306 |
使用字典描述该联系人如下:
>>> person = {'name': '张三', 'address': '南京', 'phone': '12306'}
程序将所有联系人信息存储在列表中,即通讯录是一个列表、列表的元素是字典。假设通讯录中有两个人,它们的信息如下所示:
姓名 | 地址 | 电话 |
---|---|---|
张三 | 南京 | 12306 |
李四 | 王五 | 10086 |
使用列表描述通讯录如下:
>>> zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}>>> liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}>>> persons = [zhangSan, liSi]
上面的代码为了易于理解,使用了 3 行代码描述了通讯录。也可以使用 1 行代码描述该通讯录,代码如下:
>>> persons = [{'name': '张三', 'address': '南京', 'phone': '12306'}, {'name': '李四', 'address': '北京', 'phone': '10086'}]
程序框架由两个主要部分:
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')
本小节实现增加联系人的功能,如下所示:
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']))
对每个联系人打印输出一行,假设通讯录中已经存储了张三和李四两个联系人,输出如下:
C:\> python addr-manage.py1. create person2. list all persons3. query person4. delete person5. quitEnter a number(1-5): 2张三,南京,12306李四,北京,10086
本小节实现查询联系人的功能,如下所示:
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
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')