在我们的学校项目中,我们有一个任务是使用python实现一个工作的“登录系统”。 我几乎做了所有事情,但我一直在努力解决程序中实现的两个功能。我将尝试尽可能多地解释系统的目的是什么,以便您能够理解我面临的问题:) 基本上我使用的对象是2个用户角色(管理员和普通用户),以及书籍对象。每个用户都可以登录系统,他们会看到5种不同的选择:添加书籍,删除书籍,列表簿,共享书籍(这个检查是否有其他用户正在阅读同一本书),然后退出。我在删除书籍和分享书单时遇到了极大的困难。
到目前为止,我一直将我的对象存储在列表中,并设法完成所有功能,以便它们正常工作。但问题是:这就是我在嵌套列表中存储对象的方式,这样每本书都可以与所需的用户相关联
books=[book1,[user1],book2,[user1,user3],book3,[user3,user2],book4,[user1,user4,user3]]
但每当我尝试删除一本书时,我都会使用此功能,但它无法正常工作。我知道这段代码对你来说基本没用,但无论如何我已经发布了它,所以你可以更好地了解我想要做的事情。
total=len(books)
a=input("\nType in the book you want to delete:\n")
if (total!=0):
for i in range(total):
if(a==books[i].title):
del(books[i])
print("Book has been deleted\n\n")
print(books)
break
以下代码块用于共享书功能,实际上正在运行。
books2=[]
books3=[]
xStr=input("Enter the name of the book\n")
for i in range(len(books)):
if (i%2==1): #This will select only users asociated with a book
books2.append(books[i])
if (i%2==0): #This will select only the books
books3.append(books[i])
for i in range(len(books2)):
for j in range(len(books2[i])):
if (books3[i].title==xStr):
print("Book: ",books3[i],"is also used by:",books2[i][j-1].username)
我也尝试过字典,但它没有用。
所以我想知道的是: - 在您看来,这是存储此类程序对象的最佳方式 - 我应该使用哪种数据结构以及基本如何完成
我希望我没有太多复杂,抱歉我的英语不好:) 非常感谢你
答案 0 :(得分:0)
此列表并非最佳,有更好的方法可以解决这个问题。
要认识到的重要一点是,可以在多个列表或词典中引用单个对象。此外,对象可以包含列表属性。
所以你可以保留所有书籍的清单。并列出所有用户。
用户可以拥有书籍列表属性,然后可以参考书籍,例如他读过的书籍:
class User:
booksRead = []
或者,使用构造函数:
class User:
def __init__(self):
self.booksRead = []
然后将图书添加到用户列表中:
user.booksRead.append(book)
这只是组织此方法的众多方法之一。如果您希望根据键在列表中查找项目,请使用字典。
答案 1 :(得分:0)
随着您了解更多并编写更多代码,您将找到更好的方法来整理数据;现在,仔细看看删除代码和共享代码之间的区别。 。 。 (提示:您的共享代码知道只有每个其他条目都是一本书)。