通讯录功能描述
请创建一个通讯录,用来保存联系人和电话号码。在通讯录中,我们可以查找某个联系人,如果找到则给出查找的联系人姓名及其电话号码,否则给出查无此人的提示。通讯录的核心功能是添加联系人及其电话号码,如果添加的联系人已存在,则无法再添加;还可以删除某一个联系人及其电话号码;如果不想使用了,则可以退出通讯录。
功能实现
功能导图表示:
函数设计
- 建立基础变量
- 输出功能及对应数字
- 判断数字是否正常
- 进入循环体内
- 当且仅当输入4时结束
步骤实现
建立变量
#建立信息
AddressList = {"张三":'01234567890'}
Operate_List = ["查询联系人资料","添加联系人","删除联系人"]
循环构建
由于部分功能重复,涉及到递归,再这里所有循环均选择建立函数:
循环
首先构建一级大循环,即输入数字功能循环:
#判定需要进行什么样的功能
def Operate_number():
Operate = int(input("请根据上述功能数字输入您要进行的操作\n"))
if Operate in range(1,5):
AddressList_Operate(Operate)
else:
print("您输入的数字不对!")
Operate_number()
再构建不同分支的循环:
#分支执行
def AddressList_Operate(Operate_Num):
if Operate_Num != 4:
print("您选择的操作为:",Operate_List[Operate_Num-1])
OperateStr = "请输入要"+Operate_List[Operate_Num-1][:2]+"的姓名:\n"
name = input(OperateStr)
if AddressList.get(name): #判断姓名是否存在
if Operate_Num == 1:
number = AddressList_check(name)
if number: #按级别返回值
AddressList_Operate(Operate_Num)
else:
Operate_number()
elif Operate_Num == 2:
print("您所添加的联系人已经存在,无法继续添加")
AdressList_Continue(Operate_Num)
elif Operate_Num == 3:
number = AddressList_Delete(name)
if number:
AddressList_Operate(Operate_Num)
else:
Operate_number()
else:
if Operate_Num == 2:
number = AddressList_Add(name)
if number:
AddressList_Operate(Operate_Num)
else:
Operate_number()
else:
print("您所输入的联系人不存在,请重新确认后输入!")
Operate_none = "是否继续进行" + Operate_List[Operate_Num-1] + "操作?(yes or no):"
NoneNum = input(Operate_none)
if NoneNum == "yes":
AddressList_Operate(Operate_Num)
Operate_number()
else:
print("--- 感谢使用 ---")
return 0
以及二层循环是否重复进行的判定:
#是否继续重复操作判定
def AdressList_Continue(number):
answerstr = "是否继续进行"+Operate_List[number-1][:2]+"操作?(yes or no): "
answer = input(answerstr)
if answer == "yes":
return 1
else:
return 0
分支设计
构建AddressList_check(name)、AddressList_Add(name)和AddressList_Delete(name)函数。
#执行查询功能
def AddressList_check(name):
print("您查询的",name,"的电话号码是:",AddressList[name],"\n\n")
return AdressList_Continue(1)
#执行添加功能
def AddressList_Add(name):
AddressList.update({name:input("请输入电话号码: ")})
return AdressList_Continue(2)
#执行删除功能
def AddressList_Delete(name):
del(AddressList[name])
print("--- 删除成功 ---")
return AdressList_Continue(3)
###主体执行
主要部分由于在前面有设计,主体执行变得十分简单:
#主体执行输出
print("---欢迎使用我的通讯录---")
print("---1 查询联系人资料---")
print("---2 添加联系人---")
print("---3 删除联系人---")
print("---4 退出---")
Operate_number()
输出演示