假设一个函数get_number(directory, person)
,它返回该人的电话号码。如果找不到该号码,请返回0
。
def make_directory():
return []
def add_number(directory, person, number):
directory.append((person,number))
print(str(person) + ' ' +'added!')
return(directory)
def get_number(directory, person):
if person == directory[0][0]:
return directory[0][1]
elif len(directory) >= 1:
return get_number(directory[1:],person)
else:
return 0
phonebook = make_directory()
add_number(phonebook, 'Police', 999)
add_number(phonebook, 'Lynna', 8444)
add_number(phonebook, 'Jack', 1123)
add_number(phonebook, 'Sister', 5720)
print(get_number(phonebook, 'Jack')) # I should be getting 1123
print_list(phonebook) #[('Police', 999), ('Lynna', 8444), ('Jack', 1123), ('Sister', 5720)]
但我无法得到它。我可以知道这是什么问题吗?
答案 0 :(得分:4)
因为,您要将名称与数字进行比较。你应该拥有的是
if person == directory[0][0]:
此外,如果directory
首先包含足够的值,则应该满足条件。所以,条件会变成这样的
if len(directory) >= 1:
return 0
elif person == directory[0][1]:
return directory[0][1]
else:
return get_number(directory[1:], person)
注意:我建议在这里使用Python字典。他们就是出于这个目的。