Python通讯录

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
# 本讲小目标:
# 字典及其应用
# 编写程序,统计如下英文段落中每个单词出现的次数
# text = "I have a dream that one day down, in Alabama day dream governor day."
# #处理干扰数据
# text = text.replace("," ,"") #把,换成空格
# text = text.replace(".", "") #把.换成空格
# #分词
# text = text.split(" ")  #利用空格把文章分割
# #词频统计
# # 逐个遍历分词结果列表中的单词遍历过程中完成单词出现次数统计
# word_dict = {}  #存放统计结果
# for word in text:
#     word_dict[word] = word_dict.get(word, 0) + 1

# #遍历字典,输出每个单词出现的次数:单词:次数,换行分隔
# for key in word_dict:
#     print("{}:{}".format(key, word_dict[key]))
    
# # 将遍历字典改造成while循环:不具可行性,因为在while循环体中无法自动取下一个key
# # i = 0 
# # while i<len(word_dict):
# #     print("{}:{}".format(key, word_dict[key]))


# myDict = {"学号": "2019002010101","姓名": "张宏"}
# 字典的常用操作函数:
# # 1.字典对象的get函数:get(key, value)
# # 当key存在时:获取key对应的值;当key不存在时,返回调用get时指定的value
# 2.获取字典中全部的键key:
# myDict.keys()
# keys = list(myDict.keys())
# 3.获取字典中全部的值:
# myDict.values()
# values = list(myDict.vaules())
# 4.获取字典中的全部元素:
# myDict.items()
# items = list(myDict.items())

# 应用字典实现通讯录功能
# 1.分别定义和实现各个子功能函数
# 2.在主程序中根据用户的输入选择调用对应的函数
def menu():
    print("-----欢迎使用通讯录程序----")
    print("---1:显示所有联系人信息---")
    print("---2:查询联系人信息------")
    print("---3:新增联系人信息------")
    print("---4:删除联系人信息------")
    print("---0:退出程序------------")
    return

def display():   #显示全部联系人的信息,姓名:手机号,换行
    #遍历tel_dict
    global tel_dict
    for key in tel_dict:  #遍历字典的方法
        print("{}:{}".format(key, tel_dict[key]))
        print("------------------------")
    return

def find():  #查询某个联系人的信息
    # 输入姓名
    name = input("请输入待查询的联系人姓名:")
    # 检查name是否已在通讯录中:name in tel_dict
    # if name in tel_dict: print("{}的联系电话:{}".format(name,tel_dict[name]))   #输出name对应的联系电话
    # else: print("通讯录中没有该联系人信息!")
    print(tel_dict.get(name, "通讯录中没有该联系人信息!"))  #get名字对应的值也就是电话号码!
    return

def add():  #新增联系人信息
    global tel_dict
    name = input("请输入联系人的姓名:")
    tel = input("请输入联系人的手机号:")
    #检查当前的name是否在tel_dict中已存在,如果已存在,则提示用户是否
    #要修改该联系人的手机号
    if name in tel_dict:   #判断键是否已在字典中  #貌似顺序怪怪的变成输入名字以及她的新手机号然后才提醒你要不要改然后就修改成功了
        yes_or_no = input("该联系人已存在,是否需要修改该联系人的手机号\
                          (y-是,n-):")
        if yes_or_no=="y":  #修改
            tel_dict[name] = tel
            print("{}的信息已修改成功".format(name))
    else:  #当输入的是一个新的联系人信息时,新增键值对
        tel_dict[name] = tel
        print("{}的信息已添加成功".format(name))
    return  #当return后面没有跟上具体的返回值时,函数返回None     

def delete():
    # 输入待删除的联系人姓名
    name = input("请输入待删除的联系人姓名:") 
    # 检查联系人是否存在,如果存在,则执行删除
    if name in tel_dict: 
        del tel_dict[name]#执行删除
        print("{}的信息已成功删除!".format(name))
    # 如果不存在,则提示“通讯录中没有该联系人信息!”
    else:
        print("通讯录中没有该联系人信息!")
    return       

tel_dict = {}   #tel_dict:全局变量,存储全部联系人的信息;键:姓名,值:手机号
##主程序
while True:
    #输出菜单:调用菜单显示函数
    menu()  
    #让用户输入操作选项
    choice = eval(input("请输入操作选项:"))
    #根据用户的输入选项调用不同的功能函数
    if choice==1: display()
    elif choice==2: find()
    elif choice==3: add()
    elif choice==4: delete()
    else: break

# 敏捷迭代
# 通讯录的价值:
# 1.软件设计的一般方法:敏捷迭代
# 2.函数在软件模块化设计中的优点
# 3.字典结构的基本操作:遍历字典,修改字典元素,新增元素,删除元素,判断某个键
# 是否在字典中存在

# 问题延伸:通过读文件,将联系人信息读入字典;退出程序时,将当前字典中的联系人信息
# 写入到文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值