python求助,字典
print("---欢迎进入通讯录程序---")print("---1:查询联系人资料---")
print("---2:插入新的联系人---")
print("---3:删除已有的联系人---")
print("---4:退出通讯录程序---")
contact = dict()
while 1:
oder = input("请输入相关的指令代码")
if oder == "1":
name = input("请输入联系人姓名:")
if name in contact:
print(name,":" ,contact["name"])
else:
print("联系人不在通讯录")
if oder == "2":
name = input("请输入联系人姓名:")
if name in contact:
print("您输入的姓名已在通讯录 → ",name,contact["name"])
alter = input("是否需要修改用户资料(YES/NO)")
if alter == "YES":
phone_num = input("请输入用户联系电话")
contact["name"] = phone_num
else:
phone_num = input("请输入用户联系电话")
contact["name"] = phone_num
print(" ")
if oder == "3":
name = input("请输入联系人姓名:")
if name not in contact:
print("您输入的联系人不在通讯录,无法删除")
else:
del(contact["name"])
if oder == "4":
break
print("---感谢使用通讯录程序---")
求助大家,请问我这个代码哪里有问题呢?为什么if name in contact:这个语句总是不生效
contact 是一个字典,当然不能判断一个字符串(str)是否存在于键和值中啊
改
if name in list(contact.keys()) _2_ 发表于 2020-6-27 07:41
contact 是一个字典,当然不能判断一个字符串(str)是否存在于键和值中啊
改
print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料---|')
print('|--- 2:插入新的联系人---|')
print('|--- 3:删除已有联系人---|')
print('|--- 4:退出通讯录程序---|')
contacts = dict()
while 1:
instr = int(input('\n请输入相关的指令代码:'))
if instr == 1:
name = input('请输入联系人姓名:')
if name in contacts:
print(name + ' : ' + contacts)
else:
print('您输入的姓名不再通讯录中!')
if instr == 2:
name = input('请输入联系人姓名:')
if name in contacts:
print('您输入的姓名在通讯录中已存在 -->> ', end='')
print(name + ' : ' + contacts)
if input('是否修改用户资料(YES/NO):') == 'YES':
contacts = input('请输入用户联系电话:')
else:
contacts = input('请输入用户联系电话:')
if instr == 3:
name = input('请输入联系人姓名:')
if name in contacts:
del(contacts) # 也可以使用dict.pop()
else:
print('您输入的联系人不存在。')
if instr == 4:
break
print('|--- 感谢使用通讯录程序 ---|')
那为什么小甲鱼的答案可以呢,我看好像跟我的差不多的呀 举个例子:
a={1,2}
if 1 in a:
print(True)
可以正常打印True
因为1是一个key并且在a这个字典中
但是
if 2 in a:
print(True)
就不能打印True
因为2只是1这个key的值
所以name只有是作为key存在于contact中时才能被判断为True 本帖最后由 xiaofeiyu 于 2020-6-27 20:39 编辑
contact["name"] = phone_num
contacts = input('请输入用户联系电话:')
自己看哪个地方不一样
"name"是字符串,而name是变量!
你应该把字符串改为变量!
页:
[1]