所以,我一直在研究这个简单的Python程序,以熟悉字典。基本上,它可以作为您可以搜索的数据库。如果您的条目在字典键中,它会显示有关条目的信息。
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
query = input("Look up database on whom? > ")
for (name, info) in Family.items():
if name in query or name.lower() in query:
print("{} is {}".format(name, info))
这^工作。但是,当我尝试添加一个ELSE子句来处理不存在的条目时,我得到了这个。
else:
print ('Value not found!')
打印未找到的值!在提出价值之前很多次。如果我尝试添加“返回开始”功能,它甚至不会带来注册值。我知道这是因为它是一个循环并逐个遍历dict;所以像1)jim是真的然后2)ned是假的。
如何改进此代码以使其成为:-able提供有关不存在的条目的错误,然后重新启动程序。感谢。
答案 0 :(得分:1)
您需要在代码中处理不区分大小写的问题。在继续之前,遍历列表以确保名称存在:
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
names = [name.lower() for name in Family]
def find(query):
if query.lower() in names:
info = [Family[n] for n in Family if n.lower() == query.lower()]
print('{} is {}'.format(
query, info
))
else:
print('{} not found'.format(query))
如果您尝试使用以下示例:
find('Ned')
find('ned')
find('no ned')
您将获得以下结果:
Ned is [['hot stuff', ' wears Tees']]
ned is [['hot stuff', ' wears Tees']]
no ned not found
答案 1 :(得分:0)
这是一种方法:
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
query = input("Look up database on whom? > ")
if query in Family.keys():
for (name, info) in Family.items():
if name in query or name.lower() in query:
print("{} is {}".format(name, info))
else:
print "Print Something - Not in Family"