用列表、字典两种数据类型,分别实现简单通讯录的功能

用列表、字典两种数据类型,分别实现简单通讯录的功能,要求如下:
1)程序运行过程中从键盘输入姓名、电话号码、住址:“wxl”:“13234233423”,, "qty":"13170809099", "qwe":"13973234234"
2)查找并输出“wxl”的电话号码。(自定义函数look_person实现,函数内允许使用内建函数)
3)删除“qty”的信息(自定义函数del_person,函数内允许使用内建函数)
4)将wxl的号码改为:13107666666(自定义函数 edit_person, 函数内允许使用内建函数)
5)增加一个“bana”:“15858889890”(自定义函数 add_person, 函数内允许使用内建函数)
6)将所有人的联系方式,按照姓名的拼音顺序(从小到大)输出。(自定义函数 prnt_persons, 函数内允许使用内建函数)
 

列表:

#列表
def look_person(ls1,ls2):
    name=input("请输入要查找的联系人的姓名:")
    for i in range(len(ls1)):
        if ls1[i] in name:
            num=ls2[i]
    return num
def del_person(ls1,ls2):
    name=input("请输入要删除的联系人的姓名:")
    for i in range(len(ls1)):
        if ls1[i] in name:
            del ls1[i]
            del ls2[i]
            break
    return ls1,ls2
def edit_person(ls1,ls2):
    name=input("请输入要修改的联系人的姓名:")
    a=input("请输入修改后的电话号码:")
    for i in range(len(ls1)):
        if ls1[i] in name:
            ls2[i]=a
    return ls1,ls2
def add_person(ls1,ls2):
    name=input("请输入要添加的新联系人姓名:")
    num=input("请输入要添加的新联系人的电话号码:")
    ls1.append(name)
    ls2.append(num)
    return ls1,ls2
def prnt_person(ls1,ls2): 
    for i in range(len(ls1)):
        for j in range(len(ls1)-i-1):
            if ls1[j+1]<ls1[j]:
                ls1[j],ls1[j+1]=ls1[j+1],ls1[j]
                ls2[j],ls2[j+1]=ls2[j+1],ls2[j]
    return ls1,ls2   
ls1=[]    #存放姓名
ls2=[]    #存放电话号码
print("请输入三位联系人的姓名和电话号码:")
for i in range(3):
    name=input()
    ls1.append(name)
    num=input()
    ls2.append(num)
def xh():
    c=input("请输入要执行的操作对应的数字(查找1,删除2,修改3,增加,4,排序5)):")
    if c in ['1']:
        a=look_person(ls1,ls2)    #查找并输出联系人的电话号码
        print("该联系人的电话号码为:{}".format(a))
    elif c in ['2']:
        del_person(ls1,ls2)       #删除联系人
        print("删除完后的联系人为{},对应的电话号码为{}".format(ls1,ls2))
    elif c in ['3']:
        edit_person(ls1,ls2)      #修改联系人的电话号码
        print("修改完后的联系人为{},对应的电话号码为{}".format(ls1,ls2))
    elif c in ['4']:
        add_person(ls1,ls2)       #添加新的联系人
        print("增加完后的联系人为{},对应的电话号码为{}".format(ls1,ls2))
    elif c in ['5']:
        prnt_person(ls1,ls2)    #排序联系人
        print("排序完后的联系人为{},对应的电话号码为{}".format(ls1,ls2))
    else:
        print("输入格式错误")
xh()
d=1
while d==1:
    print("是否继续?(是,请输入1/否,请输入2):")
    d=eval(input())
    if d==1:
        xh()
    elif d==2:
        print("运行结束")
        break
    else:
        print("输入格式错误,已自动退出")
        break

字典:


def look_person(A):#查找
    name=input("请输入要查找的联系人的姓名:")
    num=A.get(name,"不存在该用户")
    return num
def del_person(A):#删除
    name=input("请输入要删除的联系人的姓名:")
    del A[name]
    return A
def edit_person(A):#修改
    name=input("请输入要修改的联系人的姓名:")
    a=input("请输入修改后的电话号码:")
    A[name]=a
    return A
def add_person(A):#添加
    name=input("请输入要添加的新联系人姓名:")
    num=input("请输入要添加的新联系人的电话号码:")
    A[name]=num
    return A
def prnt_person(A): 
    L=list(A.keys())
    for i in range(0,len(L)):
        for j in range(0,len(L)-i-1):
            if L[j+1]<L[j]:
                x=L[j+1]
                L[j+1]=L[j]
                L[j]=x
    return L    
A={}
print("请输入三位联系人的姓名和电话号码:")
for i in range(3):
    name=input()
    num=input()
    A[name]=num
def xh():
    c=input("请输入要执行的操作对应的数字(1、查找 2、删除 3、修改 4、添加 5、排序)):")
    if c in ['1']:
        a=look_person(A)    #查找并输出联系人的电话号码
        print("该联系人的电话号码为:{}".format(a))
    elif c in ['2']:
        del_person(A)       #删除联系人
        print("删除完后的联系人为{}".format(A))
    elif c in ['3']:
        edit_person(A)      #修改联系人的电话号码
        print("修改后的联系人为{}".format(A))
    elif c in ['4']:
        add_person(A)       #添加新的联系人
        print("添加后的联系人为{}".format(A))
    elif c in ['5']:
        L=prnt_person(A)    #排序联1系人
        for name in L:
            print("排序后的联系人为:{}:{}".format(name,A[name]))
    else:
        print("输入格式错误")
xh()
d=1
while d==1:
    print("是否继续?(yes or no?):")
    d=input()
    if d==yes:
        xh()
    elif d==no:
        print("运行结束")
        break
    else:
        print("输入格式错误,已退出")
        break

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值