关于#python#的问题:在调试代码的过程中

在调试代码的过程中,我已经遇到几次这样的报错了。这里的意思是我在创建这些对象是没有指定这些参数,这是不是我book.txt文件里面的没有指定有关?我应该怎么解决?

img

img

代码不完整,你是怎么调用addbook的,需要传入book对象,你传入了没有


class BookManager:
    def __init__(self):
        self.book_file = 'C:/Users/付哉/Desktop/python期末大作业2022.2/book.txt'

    # 添加图书
    def add_book(self, book):
        with open(self.book_file, 'a', encoding='utf-8') as f:
            bNo, bName, bClass, bPublic, bAuthor, bName, bPrice, bNum, bDate = book
            f.write(f"{bNo},{bName},{bClass},{bPublic},{bAuthor},{bName},{bPrice},{bNum},{bDate}\n")
        print("添加图书成功!")

    # 修改图书
    def modify_book(self, bNo, new_book):
        books = []
        with open(self.book_file, 'r', encoding='utf-8') as f:
            for line in f:
                book = line.strip().split()
                if book[0] == bNo:
                    books.append(new_book)
                else:
                    books.append(book)

        with open(self.book_file, 'w', encoding='utf-8') as f:
            for book in books:
                f.write(f"{','.join(book)}\n")
        print("修改图书成功!")

    # 删除图书
    def delete_book(self, bNo):
        books = []
        with open(self.book_file, 'r', encoding='utf-8') as f:
            for line in f:
                book = line.strip().split()
                if book[0] != bNo:
                    books.append(book)

        with open(self.book_file, 'w', encoding='utf-8') as f:
            for book in books:
                f.write(f"{','.join(book)}\n")
        print("删除图书成功!")

    # 查询图书
    def search_book(self, bNo=None, bName=None):
        result = []
        with open(self.book_file, 'r', encoding='utf-8') as f:
            for line in f:
                book = line.strip().split()
                if bNo and book[0] == bNo:
                    result.append(book)
                elif bName and book[1] == bName:
                    result.append(book)

        return result

    # 浏览图书
    def browse_books(self):
        with open(self.book_file, 'r', encoding='utf-8') as f:
            for line in f:
                print(line.strip())

# 测试
while True:
    bm = BookManager()
    choice = input("请选择功能:1.添加 2.修改 3.删除 4.查询 5.浏览 6.退出\n")
    if choice == "1":
        bm.add_book()
    elif choice == "2":
       bm.modify_book()
    elif choice == "3":
        bm.delete_book()
    elif choice =="4":
        bm.search_book()
    elif choice =="5":
        bm.browse_book()
    elif choice =="6":
        break
    else:
        print("无效输入,请重新选择。")