print ("""
|---欢迎进入通讯录程序---|
|---1:查询联系人资料---|
|---2:插入新的联系人---|
|---3:删除已有联系人---|
|---4:退出通讯录程序---|
""")
dict = {}
while True:
number=int(input("请输入相关的指令代码:"))
if number==2:
name=input("请输入联系人姓名:")
if name not in dict.keys():
tel = input("请输入用户联系电话:")
print ("\r")
dict[name] = tel
else:
print ("您输入的姓名在通讯录中已存在---> %s:%s" %(name,dict[name]))
flag=input("是否修改用户资料(Yes/No):")
if flag=="Yes":
tel = input("请输入用户联系电话:")
print("\r")
dict[name]=tel
if number==1:
name=input("请输入联系人姓名:")
print ("%s:%s" %(name,dict[name]))
print("\r")
if number==3:
name=input("请输入联系人姓名:")
if name in dict.keys():
del(dict[name])
else:
print("您输入的联系人不存在。")
if number==4:
break
print("|---感谢使用通讯录程序---|")
**我们发现使用条件语句的代码非常直观明了,但是效率不高。因为程序会两次访问字典的key,一次判断是否存在(if name in dict.keys()),一次获取值(print (“%s:%s” %(name,dict[name])))。
如果利用异常解决方案,我们可以简单避开每次需要使用in判断key存在字典的操作。因为只要key不存在字典中时,会出发KeyError异常,利用此特征我们可以修改代码。**
# -*- coding: utf-8 -*-
print ("""
|---欢迎进入通讯录程序---|
|---1:查询联系人资料---|
|---2:插入新的联系人---|
|---3:删除已有联系人---|
|---4:退出通讯录程序---|
""")
dict = {}
while True:
try:
number=int(input("请输入相关的指令代码:"))
if number==1:
name=input("请输入联系人姓名:")
try:
print ("%s:%s" %(name,dict[name]))
print("\r")
except KeyError:
print("您输入的姓名不再通讯录中!")
if number==2:
name=input("请输入联系人姓名:")
try:
dict[name]
print("您输入的姓名在通讯录中已存在---> %s:%s" % (name, dict[name]))
flag = input("是否修改用户资料(Yes/No):")
if flag in ["Yes","YES","yes"]:
tel = input("请输入用户联系电话:")
print("\r")
dict[name] = tel
except KeyError:
dict[name]=input("请输入用户联系电话:")
if number==3:
name=input("请输入联系人姓名:")
try:
del(dict[name]) #也可以使用dict.pop
except KeyError:
print("|---您输入的联系人不存在---|")
if number==4:
break
except ValueError as reason:
print("请输入指令代码1-4,错误原因为:"+str(reason))
print("|---感谢使用通讯录程序---|")