in python, sorting and searching. Write a telephone lookup program. Read a data
ID: 3768642 • Letter: I
Question
in python, sorting and searching.
Write a telephone lookup program. Read a data set of names and telephone numbers from a file that contains the numbers in random order. Handle lookups by name and also reverse lookups by phone number. Use a binary search for both lookups. Use the following data set:
Bob|555-1234
Joe|555-2345
Matthew|555-3456
Mark|555-4567
Luke|555-5678
John|555-6789
The program should prompt the user as follows:
L)ookup Name, Lookup N)umber or Q)uit?
Enter the name:
Or
Enter the Number:
Explanation / Answer
import logging
class Person:
def __init__(self, name, number):
self.name = name
self.number = number
def binarySearchByName(aList, name):
if len(aList) == 1:
if aList[0].name == name:
print aList[0].name + " " + aList[0].number
return
else:
mid = len(aList)//2
if aList[mid].name == name:
print aList[mid].name + " " + aList[mid].number
return
elif name < aList[mid].name:
binarySearchByName(aList[:mid], name)
elif name > aList[mid].name:
binarySearchByName(aList[mid:], name)
def binarySearchByNumber(aList, number):
if len(aList) == 1:
if aList[0].number == number:
print aList[0].name + " " + aList[0].number
return
else:
mid = len(aList)//2
if aList[mid].number == number:
print aList[mid].name + " " + aList[mid].number
return
elif number < aList[mid].number:
binarySearchByNumber(aList[:mid], number)
else:
binarySearchByNumber(aList[mid:], number)
f = open('contacts.txt', 'r')
persons = []
for line in f:
array = line.split("|")
newPerson = Person(array[0], array[1].strip())
persons.append(newPerson)
f.close()
while True:
var = raw_input("L)ookup Name, Lookup N)umber or Q)uit? ")
if var == 'L':
persons.sort(key=lambda person: person.name)
name = raw_input("Enter the name: ")
binarySearchByName(persons, name)
elif var == 'N':
persons.sort(key=lambda person: person.number)
number = raw_input("Enter the number: ")
binarySearchByNumber(persons, number)
else:
if var == 'Q':
break
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.