class Book: def__init__(self,title, author, isbn): selftitle=title selfauthor=author self.isbn=isbn class Library: def__init__(self): self.books=[] defadd_book(self,book): self.books.append(book) defremove_book(self,book): self.books.remove(book) def search_book(self,title): for book in self.books: if book.title==title: return book return None def display_books(self): for book in self.books: print(f"{book.title} by {book.author} (ISBN: {book.isbn})") library=Library() while True: print("1. Add book") print("2. Remove book") print("3. Search book") print("4. Display all books") print("5. Exit") choice=input("Enter your choice:") if choice== "1": title=input("Enter book title:") author=input("Enter book author") isbn=input("Enter bookISBN:") book=Book(title,author,isbn) library.add_book(book) print("Book added successfully!") elif choice=="2": title=input("Enter book title:") book=librarysearch_book(title) if book: library.remove_book(book) print("Book removed successfully!") else: print("Book not found!") elif choice == "3": title=input("Enter book title:") book=library.search_book(title) if book: print(f"{book.title} by {book.author} (ISBN: {book.isbn})") else: print("Book not found!") elif choice == "4": librarydisplay_books() elif choice=="5": break else: print("Invalid choice!")
时间: 2024-04-20 18:27:20 浏览: 17
这段代码是一个图书管理系统的实现,其中定义了两个类 Book 和 Library。 Book 表示一本书,具有三个属性 title、author 和 isbn;Library 表示一个图书馆,具有一个 books 列表属性,分别实现了添加、删除、搜索和展示书籍的功能。在主程序中,使用了一个 while 循环来不断接收用户的输入,根据用户的输入来调用不同的方法实现对书籍的管理。
相关问题
class Book: def __init__(self, title, author, isbn, available=True): self.title = title self.author = author self.isbn = isbn self.available = available class Library: def __init__(self, books=None): if books is None: books = [] self.books = books def add_book(self, book): self.books.append(book) def remove_book(self, book): self.books.remove(book) def search_book_by_title(self, title): return [book for book in self.books if book.title == title] def search_book_by_author(self, author): return [book for book in self.books if book.author == author] def search_book_by_isbn(self, isbn): return [book for book in self.books if book.isbn == isbn] def checkout_book(self, book): if book.available: book.available = False return True else: return False def return_book(self, book): book.available = True if __name__ == '__main__': library = Library() book1 = Book('The Great Gatsby', 'F. Scott Fitzgerald', '978-0143129453') book2 = Book('To Kill a Mockingbird', 'Harper Lee', '978-0446310789') book3 = Book('1984', 'George Orwell', '978-0451524935') library.add_book(book1) library.add_book(book2) library.add_book(book3) print(library.search_book_by_title('1984'))修正优化
class Book:
def __init__(self, title, author, isbn, available=True):
self.title = title
self.author = author
self.isbn = isbn
self.available = available
class Library:
def __init__(self, books=None):
if books is None:
books = []
self.books = books
def add_book(self, book):
self.books.append(book)
def remove_book(self, book):
self.books.remove(book)
def search_book_by_title(self, title):
return [book for book in self.books if book.title.lower() == title.lower()]
def search_book_by_author(self, author):
return [book for book in self.books if book.author.lower() == author.lower()]
def search_book_by_isbn(self, isbn):
return [book for book in self.books if book.isbn == isbn]
def checkout_book(self, book):
if book.available:
book.available = False
return True
else:
return False
def return_book(self, book):
book.available = True
if __name__ == '__main__':
library = Library()
book1 = Book('The Great Gatsby', 'F. Scott Fitzgerald', '978-0143129453')
book2 = Book('To Kill a Mockingbird', 'Harper Lee', '978-0446310789')
book3 = Book('1984', 'George Orwell', '978-0451524935')
library.add_book(book1)
library.add_book(book2)
library.add_book(book3)
print(library.search_book_by_title('1984'))
# 修正优化:
# 1. 在搜索图书时,将标题和作者名转换为小写字母,以避免大小写不匹配的问题。
# 2. 在搜索图书时,如果没有找到符合条件的图书,则返回一个空列表,而不是 None。
优化下面的代码,使其更复杂class Book: def init(self, title, author, isbn, available=True): self.title = title self.author = author self.isbn = isbn self.available = available class Library: def init(self, books=[]): self.books = books def add_book(self, book): self.books.append(book) def remove_book(self, book): self.books.remove(book) def search_book_by_title(self, title): for book in self.books: if book.title == title: return book return None def search_book_by_author(self, author): results = [] for book in self.books: if book.author == author: results.append(book) return results def search_book_by_isbn(self, isbn): for book in self.books: if book.isbn == isbn: return book return None def checkout_book(self, book): if book.available: book.available = False return True else: return False def return_book(self, book): book.available = True if name == 'main': library = Library() book1 = Book('The Great Gatsby', 'F. Scott Fitzgerald', '978-0143129453') book2 = Book('To Kill a Mockingbird', 'Harper Lee', '978-0446310789') book3 = Book('1984', 'George Orwell', '978-0451524935') library.add_book(book1) library.add_book(book2) library.add_book(book3) print(library.search_book_by_title('1984'))
下面是优化后的代码:
```
class Book:
def __init__(self, title, author, isbn, available=True):
self.title = title
self.author = author
self.isbn = isbn
self.available = available
class Library:
def __init__(self, books=None):
if books is None:
books = []
self.books = books
def add_book(self, book):
self.books.append(book)
def remove_book(self, book):
self.books.remove(book)
def search_book_by_title(self, title):
return [book for book in self.books if book.title == title]
def search_book_by_author(self, author):
return [book for book in self.books if book.author == author]
def search_book_by_isbn(self, isbn):
return [book for book in self.books if book.isbn == isbn]
def checkout_book(self, book):
if book.available:
book.available = False
return True
else:
return False
def return_book(self, book):
book.available = True
if __name__ == '__main__':
library = Library()
book1 = Book('The Great Gatsby', 'F. Scott Fitzgerald', '978-0143129453')
book2 = Book('To Kill a Mockingbird', 'Harper Lee', '978-0446310789')
book3 = Book('1984', 'George Orwell', '978-0451524935')
library.add_book(book1)
library.add_book(book2)
library.add_book(book3)
print(library.search_book_by_title('1984'))
```
主要的优化包括:
1. 将默认参数 books=[] 改为 books=None,并在 __init__ 函数中初始化为一个空列表。这样可以避免多个 Library 实例共享同一个 books 列表的问题。
2. 在 search_book_by_title、search_book_by_author 和 search_book_by_isbn 函数中,使用列表推导式一次性生成结果列表,避免使用 for 循环和 if 语句。
3. 将 if name == 'main': 改为 if __name__ == '__main__':,这是更加 pythonic 的写法。