. 简答题
编程用字典作为列表的元素实现简单的通讯录管理。具体要求如下:
(1)定义一个空列表adr用于存放通讯录信息,并调用相关自定义的函数实现通讯录的录入、修改、查询、删除、打印等操作。程序要求根据输入的选项信息调用相应的函数执行相应的操作。
(2)定义函数add(),用元组(‘name’,’Tel’, ‘QQ’)作键名和键盘输入相应的数据生成一个字典返回。例如,键盘输入可能返回的字典内容为[‘name’:‘Z’, ’Tel’:’111’, ’QQ’:’6666’],该返回的字典数据用于添加到一个全局列表adr(通讯录)中
(2)定义函数search(x),查找并返回adr中某个键值为x的元素信息(三个键对应的值都有可能等于x),打印并返回该元素的索引值,如果没找到,则给出屏幕提示,返回-1。
(3)定义函数delete(x),调用search函数查找并删除adr中某个键值为x的元素(三个键对应的值都有可能等于x)。删除元素打印并键盘输入y/n确认。
(4)定义函数modify(d, name='', Tel='', QQ=''),用参数name,Tel, QQ等作为键名修改adr中的元素d,如果某个参数为空字符串,则该键所对应的值保持不变。参数d可以根据要修改的信息调用search函数确定。
可参考的程序框架如下:
def add():
...
def (d, name='', Tel='', QQ=''):
...
def search(x):
...
def delete(x):
...
adr[]
while True:
op=input('Input (Add-a, Delete-d, Moid-m, Search-s, Print-p, Quti-q):' )
if op==’q’:
break
def add():
name = input("请输入姓名:")
Tel = input("请输入电话:")
QQ = input("请输入QQ号:")
return {'name': name, 'Tel': Tel, 'QQ': QQ}
def modify(d, name='', Tel='', QQ=''):
if name:
d['name'] = name
if Tel:
d['Tel'] = Tel
if QQ:
d['QQ'] = QQ
return d
def search(x):
for i, item in enumerate(adr):
if x in item.values():
return i, item
return -1, {}
def delete(x):
index, item = search(x)
if index == -1:
print("未找到该通讯录信息。")
return
confirm = input("是否确认删除该通讯录信息(y/n):")
if confirm == 'y':
adr.pop(index)
print("已成功删除该通讯录信息。")
else:
print("操作已取消。")
adr = []
while True:
op = input('请输入操作(Add-a, Delete-d, Modify-m, Search-s, Print-p, Quit-q):')
if op == 'a':
adr.append(add())
print("已成功添加通讯录信息。")
elif op == 'd':
x = input("请输入要删除的姓名、电话或QQ号:")
delete(x)
elif op == 'm':
x = input("请输入要修改的姓名、电话或QQ号:")
index, item = search(x)
if index == -1:
print("未找到该通讯录信息。")
else:
name = input("请输入新的姓名(回车则保持原姓名):")
Tel = input("请输入新的电话(回车则保持原电话):")