我在构建电话簿方面遇到了一些问题,我有一个添加姓名和号码的功能,这个功能可以为人提供别名(两个号码有两个不同的名字)。和一个我有问题的变化功能。我希望该函数能够更改一个人及其所有别名的数量。我的代码如下所示:
class Phonebook: #vi skapar en klass
def __init__(self): #för att initiera scriptet (constructor)
self.pb={} #dictionary
def add(self,namn,nummer):
if namn in self.pb:
print "Name already in contacts!" #kolla om namnet finns
elif nummer in self.pb.viewvalues(): #kolla om numret finns
print "Number already exists for a contact!"
else:
self.pb[namn]=nummer #lägga till namn med tel.nr
def lookup(self,namn):
if namn in self.pb:
print
print self.pb[namn] #skriver ut numret till namnet
print
else:
print "Name is not in contacts"
print
def alias(self,namn,nummer):
self.pb[nummer]=self.pb[namn] #två namn får samma nummer
def change(self,namn,nummer):
if namn in self.pb:
for godtyckligt in self.pb:
if self.pb[namn]==self.pb[godtyckligt]:
self.pb[godtyckligt]=nummer
我可以在更改功能和/或别名功能中更改哪些内容?感谢。
答案 0 :(得分:0)
如果我理解正确,您需要将旧号码替换为某个名称,然后将新号码添加为别名,将其设置为名称,然后将旧号码删除为别名:
def change(self,namn,nummer):
old_number = ''
if namn in self.pb:
for godtyckligt in self.pb:
if self.pb[namn]==self.pb[godtyckligt]:
old_nummer = self.pb[godtyckligt]
self.pb[godtyckligt]=nummer
self.pb[nummer]=godtyckligt
del self.pb.pop(old_nummer)
您的alias
方法应该是这样的:
#You need to define another dict aliases
#aliases = {}
def alias(self, name0, name1):
self.aliases[name0].append(name1)
然后更改lookup
方法:
def lookup(self,namn):
if namn in self.pb:
print
print self.pb[namn] #skriver ut numret till namnet
print
return
else:
for name in aliases:
if namn in aliases[name]:
print
print self.pb[namn] #skriver ut numret till namnet
print
return
print "Name is not in contacts"
print
return