查找元组列表中的数字

时间:2014-04-12 06:52:00

标签: python

假设一个函数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)]

但我无法得到它。我可以知道这是什么问题吗?

1 个答案:

答案 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字典。他们就是出于这个目的。