救命江湖救急啊啊啊啊啊

. 简答题

编程用字典作为列表的元素实现简单的通讯录管理。具体要求如下:

(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("请输入新的电话(回车则保持原电话):")