所以我不确定这个标题是否有意义,但基本上我有一个跟踪朋友的类(比如一个地址簿),我需要创建一个函数,将朋友添加到一组现有的名字中。所以我的代码开头是:
class SocialAddressBook:
def __init__(self):
self.book= []
def addName(self, name, address):
self.book.append([name, address, set()])
"""Adds name to address book, with address and no friends"""
运行良好。然后给我'list' object has no attribute 'list'
错误的部分:
def addFriend(self, name, friend):
for k in range(len(self.book.list[k])):
if self.book[k][0] == name:
我的想法是迭代一个列表并添加到现有的列表中,但是语法肯定会让我陷入循环(没有双关语的意思),我不确定现在该怎么做。你知道吗
一些测试代码:
a.addFriend('Fred', 'Barb'); a.addFriend('Fred', 'Sue')
a.addFriend('Barb', 'Jane'); a.addFriend('Jane', 'Emma')
a.addFriend('Jane', 'Mary'); a.addFriend('Emma', 'Lisa')
谢谢你!你知道吗
方法中的
for
循环不正确。具体来说,self.book.list[k]
。你知道吗首先,
self.book
是一个列表,列表没有list
属性。其次,您不能在那里使用k
,因为它还不存在。你知道吗如果你想循环一个列表,为什么不这样做呢?您不需要使用
range()
。你知道吗如果可以,应该使用字典而不是列表来实现解决方案,以提高通讯簿的性能。添加名字很简单,除了检查错误之外,添加朋友也很简单。为了获得更完整的解决方案,添加了一个
remove_name
方法,显示如何正确地删除某人。你知道吗如果可能,请尽快阅读PEP 8 Style Guide for Python Code。用Python编写的代码应该符合样式指南,以提高可维护性,并鼓励其他人阅读您的代码并回答您的问题。今后,在提出问题之前,请先解决你的问题。你知道吗
相关问题 更多 >
编程相关推荐