python手机通讯录

python手机通讯录

基本思路:列表嵌套字典

[{‘姓名’:张三,‘手机号’:XX,'邮箱:XX,‘地址’:XX},
{‘姓名’:李四,‘手机号’:XX,'邮箱:XX,‘地址’:XX},
{‘姓名’:赵五,‘手机号’:XX,'邮箱:XX,‘地址’:XX},
{‘姓名’:王六,‘手机号’:XX,'邮箱:XX,‘地址’:XX}]

通讯录功能:

一、添加联系人
要点: 判断通讯录是否为空、姓名输入是否为空、联系人是否已经存在、手机号和邮箱是否合法

二、查看通讯录
要点: 判断通讯录是否为空

三、删除联系人
要点: 判断通讯录是否为空、姓名输入是否为空、联系人是否存在

四、修改联系人
要点: 判断通讯录是否为空、姓名输入是否为空、联系人是否存在、新的手机号和邮箱是否合法,通过判断输入的新信息是否为空,判断该信息是否需要修改

五、查找联系人
要点: 判断通讯录是否为空、姓名输入是否为空、联系人是否存在

六、退出
要点:

功能实现思路:
将各功能写成函数,再通过最后面的功能菜单调用,清晰明了
手机号和邮箱合法性判断也需写成函数,因为在添加和修改联系人中都有使用

程序如下

定义通讯录列表

# Program:手机通讯录
# Date: 2020-05-12
# Author:是猫南北

addressBook = []  # 通讯录,用于存放联系人信息

添加联系人

def add_contacts():
    # 添加联系人
    while 1:
        name = input("请输入联系人的姓名:")
        if name.strip():  # 判断输入是否为空
            for i in addressBook:
                if name in i['姓名']:  # 判断好友是否已经存在
                    print("该好友已经存在!")
                    return  # 好友已经存在,跳出add_contacts()函数
            break  # 好友尚未存在,跳出while循环
        else:
            print("输入为空,请输入正确信息!")
    phone = input("请输入联系人的手机号:")
    phone = check_phone(phone)  # 手机号合法性判断,确保手机号正确
    email = input("请输入联系人的邮箱:")
    email = check_email(email)  # 邮箱合法性判断,确保邮箱正确
    while 1:
        address = input("请输入联系人的地址:")
        if address.strip():
            break  # 输入不为空,跳出循环
        else:
            print("输入为空,请输入正确信息!")
    contacts = dict(姓名=name, 手机号=phone, 邮箱=email, 地址=address)  # 存储一个联系人的全部信息
    addressBook.append(contacts)  # 存储一个联系人的全部信息到通讯录
    print("保存成功!")

查看通讯录

def view_contacts():
    # 查看通讯录
    if addressBook:  # 判断通讯录是否为空
        # 输出全部联系人信息
        for i in addressBook:
            for x, y in i.items():
                print(x, ':', y, end="  ")
            print()
        print()
    else:
        print("通讯录无信息!")

删除联系人

def res_contacts():
    # 删除联系人
    if addressBook:
        name_res = input("请输入要删除的好友姓名:")
        t = True
        if name_res.strip():  # 判断输入是否为空
            for i in addressBook:
                if i['姓名'] == name_res:  # 判断好友是否存在
                    addressBook.remove(i)  # 删除操作
                    print("删除成功!")
                    t = False
            if t:
                print("该联系人不在通讯录中!")
        else:
            print("输入为空!")
    else:
        print("通讯录无信息!")

修改联系人

def rev_contacts():
    # 修改联系人
    if addressBook:
        name_rev = input("请输入要修改的联系人姓名:")
        t = True
        if name_rev.strip():  # 判断输入是否为空
            for i in addressBook:
                if name_rev in i['姓名']:  # 判断联系人是否存在
                    t = False
                    print("若有信息无需修改,请按回车键跳过!")
                    name = input("请输入新的姓名:")
                    if name.strip():  # 判断输入是否为空,以判断该项信息是否需要修改
                        i['姓名'] = name
                    phone = input("请输入新的手机号:")
                    if phone.strip():
                        i['手机号'] = check_phone(phone)  # 手机号合法性判断,并完成修改
                    email = input("请输入新的邮箱:")
                    if email.strip():
                        i['邮箱'] = check_email(email)  # 邮箱合法性判断,并完成修改
                    address = input("请输入新的地址:")
                    if address.strip():
                        i['地址'] = address
                    # 输出修改后的联系人信息
                    for x, y in i.items():
                        print(x, ':', y, end="  ")
                    print()
                    print("保存成功!")
            if t:
                print("该联系人不在通讯录中!")
        else:
            print("输入为空!")
    else:
        print("通讯录无信息!")

查找联系人

def seek_contacts():
    # 查找联系人
    if addressBook:
        name_seek = input("请输入要查找的联系人的姓名:")
        t = True
        if name_seek.strip():  # 判断输入是否为空
            for i in addressBook:
                if name_seek in i['姓名']:  # 判断联系人是否存在
                    t = False
                    # 输出查找到的联系人信息
                    for x, y in i.items():
                        print(x, ':', y, end="  ")
                    print()
            if t:
                print("该联系人不在通讯录中!")
        else:
            print("输入为空!")
    else:
        print("通讯录无信息")

退出

def end():
    # 退出
    import sys
    sys.exit()  # 退出程序

手机号合法性判断

def check_phone(phone):
    # 手机号合法性判断,这里只判断了号段(前三位)
    # 这里使用了正则表达式 更多信息可访问菜鸟教程
    import re
    pattern = re.compile(r'^(13[0-9]|14[0|5|6|7|9]|15[0|1|2|3|5|6|7|8|9]|'
                         r'16[2|5|6|7]|17[0|1|2|3|5|6|7|8]|18[0-9]|'
                         r'19[1|3|5|6|7|8|9])\d{8}$')
    if pattern.search(phone):
        return phone  # 返回合法的手机号
    else:
        phone = input("手机号输入有误,请重新输入:")
        return check_phone(phone)  # 重复进行合法性判断,并返回合法的手机号

邮箱合法性判断

def check_email(email):
    # 邮箱合法性判断 这里使用了正则表达式 更多信息可访问菜鸟教程
    import re
    pattern = re.compile(r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$')
    if pattern.search(email):
        return email  # 返回合法的邮箱
    else:
        email = input("邮箱输入有误,请重新输入:")
        return check_email(email)  # 重复进行合法性判断,并返回合法的邮箱

功能菜单

# 功能菜单
print("欢迎使用好友管理系统")
print("1:添加联系人")
print("2:查看通讯录")
print("3:删除联系人")
print("4:修改联系人")
print("5:查找联系人")
print("6:退出")
while 1:
    n = input("请输入您的选项:")
    # 将1~6的选项作为键,各功能函数作为值写入字典中,起到多分支选择作用
    select = {'1': add_contacts, '2': view_contacts, '3': res_contacts, '4': rev_contacts, '5': seek_contacts,
              '6': end}
    if n in select:
        select[n]()  # 通过选项访问功能函数名,以调用功能函数
    else:
        print("输入选项错误,请重新输入!")

这是我的第一篇python学习博客,喜欢就请点赞收藏噢!
如果您发现错误或不足,欢迎在评论区指出噢!

  • 35
    点赞
  • 194
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值