零基础python课后练习的疑问
原题:我的代码:
print('''丨--- 欢迎进入通讯录程序 ---丨
丨 --- 1:查询联系人资料 ---丨
丨 --- 2:插入新的联系人 ---丨
丨 --- 3:删除已有联系人 ---丨
丨 --- 4:退出通讯录程序 ---丨''') #打印开头的话
dict1 = {}#创建空字典
while True: #设置while循环
instruction = int(input('请输入相关的指令代码:'))
if instruction == 2:
name_new = input('请输入联系人姓名:')
if name_new in dict1: #检测名字是否已存在于通讯录
print("您输入的姓名在通讯录中已存在 -->>" ,name_new, dict1)
change = input('是否修改用户资料(YES/NO)')
if change == 'YES': #如果输入YES修改名字对应的号码
number_new = input('请输入用户联系电话:')
dict1 = (name_new, number_new)
else:
number_new = input('请输入用户联系电话:')#如果没有存在则创建新联系人
dict1 = (name_new, number_new)
elif instruction == 1:
name = input('请输入联系人姓名:')
if name in dict1:
print(name, ':', dict1) #打印名字及号码
else:
print('您输入的名字不存在!')
elif instruction == 3:
name_del = input('请输入要删除的联系人姓名:')
dict1.pop(name_del)#删除字典中联系人的信息
elif instruction == 4:
break #输入4退出循环
else:
print("输入错误,请重新输入!") #输入1 2 3 4 以外的数字报错
print('\n')
print('丨--- 感谢使用通讯录程序 ---丨') #退出循环后打印感谢语
但我运行到 “1” 这个指令的时候 输入名字后直接报错了,求问问题出在哪里?
答案和我的方法不是太一样,所以想了解一下我的错因再研究一下答案的原理!谢谢! dict1 = (name_new, number_new) #变成了元组,不是字典了。
改为 dict1 =number_new
有两处哟。 冬雪雪冬 发表于 2017-8-27 17:01
dict1 = (name_new, number_new) #变成了元组,不是字典了。
改为 dict1 =number_new
有两处哟 ...
小甲鱼老师在课程里有这样定义过一个字典
dict(((1,3),(3,5),(5,7),(7,9)))
我以为这俩差不多的= =
谢谢版主大大! 冬雪雪冬 发表于 2017-8-27 17:01
dict1 = (name_new, number_new) #变成了元组,不是字典了。
改为 dict1 =number_new
有两处哟 ...
打扰了!
我刚刚测试的时候一切正常
但是在 联系人已经存在 输入新的号码之后
查询联系人 显示的还是原来的号码
我和答案比较了下,也没发现什么不同!
求解答! 我试了没有发现你说的问题。
丨--- 欢迎进入通讯录程序 ---丨
丨 --- 1:查询联系人资料 ---丨
丨 --- 2:插入新的联系人 ---丨
丨 --- 3:删除已有联系人 ---丨
丨 --- 4:退出通讯录程序 ---丨
请输入相关的指令代码:2
请输入联系人姓名:q
请输入用户联系电话:123
请输入相关的指令代码:1
请输入联系人姓名:q
q : 123
请输入相关的指令代码:2
请输入联系人姓名:q
您输入的姓名在通讯录中已存在 -->> q 123
是否修改用户资料(YES/NO)YES
请输入用户联系电话:345
请输入相关的指令代码:1
请输入联系人姓名:q
q : 345 冬雪雪冬 发表于 2017-8-27 19:43
我试了没有发现你说的问题。
我修改后的代码:
print('''丨--- 欢迎进入通讯录程序 ---丨
丨 --- 1:查询联系人资料 ---丨
丨 --- 2:插入新的联系人 ---丨
丨 --- 3:删除已有联系人 ---丨
丨 --- 4:退出通讯录程序 ---丨''') #打印开头的话
dict1 = {}#创建空字典
while True: #设置while循环
instruction = int(input('请输入相关的指令代码:'))
if instruction == 2:
name = input('请输入联系人姓名:')
if name in dict1: #检测名字是否已存在于通讯录
print("您输入的姓名在通讯录中已存在 -->>" ,name,':',dict1)
change = input('是否修改用户资料(YES/NO)')
if change == 'YES': #如果输入YES修改名字对应的号码
number = input('请输入用户联系电话:')
dict1 = number_new
else:
number_new = input('请输入用户联系电话:')#如果没有存在则创建新联系人
dict1 = number_new
elif instruction == 1:
name = input('请输入联系人姓名:')
if name in dict1:
print(name,':',dict1) #打印名字及号码
else:
print('您输入的名字不存在!')
elif instruction == 3:
name_del = input('请输入要删除的联系人姓名:')
dict1.pop(name_del)#删除字典中联系人的信息
elif instruction == 4:
break #输入4退出循环
else:
print("输入错误,请重新输入!") #输入1 2 3 4 以外的数字报错
print('\n')
print('丨--- 感谢使用通讯录程序 ---丨') #退出循环后打印感谢语
输出结果:丨--- 欢迎进入通讯录程序 ---丨
丨 --- 1:查询联系人资料 ---丨
丨 --- 2:插入新的联系人 ---丨
丨 --- 3:删除已有联系人 ---丨
丨 --- 4:退出通讯录程序 ---丨
请输入相关的指令代码:2
请输入联系人姓名:A
请输入用户联系电话:123
请输入相关的指令代码:2
请输入联系人姓名:A
您输入的姓名在通讯录中已存在 -->> A : 123
是否修改用户资料(YES/NO)YES
请输入用户联系电话:234
请输入相关的指令代码:1
请输入联系人姓名:A
A : 123
请输入相关的指令代码:
17行
number_new = input('请输入用户联系电话:') 冬雪雪冬 发表于 2017-8-27 21:16
17行
number_new = input('请输入用户联系电话:')
谢谢!解决了!看来以后还得多加细心
页:
[1]