我必须为一个小项目做联系簿。 我有一个列表,其中包含列表,如:
Contact_List = [["Smith", "John", "780 555 3234", "jsmith@gsacrd.ab.ca"], ["Pitts", "Harry", "780 555 7329", "hpitts@gmail.com"], ["Fields", "Sara", "780 555 8129", "sfields@hotmail.com"], ["Smith", "Jane", "780 555 2819", "jsmith@gmail.com"], ["Unger", "Felix", "302 555 3819", "funger@universal.org"]]
所以,我想按姓名或姓氏进行搜索,我想打印该特定联系人。
def SearchByName():
print "Search Contact by the Name"
name = raw_input("Enter the name :")
def search(name[0], name[-1]):
for x in Contact_list:
if (x[0] == first) and (x[1] == last):
print 'contact found it'
print x[2], x[3]
else:
print "This Contact Does Not Exist!!"
并且始终打印
"This Contact Does Not Exist!!"
还有一个名为SearchByLastname
的def
所以,如果我们可以修复,我可以编辑
答案 0 :(得分:2)
如果用户输入的姓名和姓氏之间有空格,则需要使用拆分
name = raw_input("Enter the name :").split()
你的代码应该是这样的:
def SearchByName():
print "Search Contact by the Name"
name = raw_input("Enter the name :").split()
search(name[0], name[-1])
def search(first, last):
for x in Contact_list:
if (x[0] == first) and (x[1] == last):
print 'contact found it'
print x[2], x[3]
break
else:
print "This Contact Does Not Exist!!"
SearchByName()
答案 1 :(得分:1)
在您的解决方案中,当else
条件为假时,您会在每次迭代时转到if
块。
成功比较后放置break
并移动else
成为循环的一部分。
这应该这样做:
for x in Contact_list:
if (x[0] == first) and (x[1] == last):
print 'contact found it'
print x[2], x[3]
break
else:
print "This Contact Does Not Exist!!"
在找到第一个匹配的联系人后,这将中断。如果您需要找到所有匹配的联系人,则必须重新设计解决方案。