编辑代码

# -*- coding: utf-8 -*-

class Book():
    def __init__(self, name, category, price):
        self.name = name
        self.category = category
        self.price = price

def getAttr(library, name):
    """
    根据书名获取类别和价格
    """
    category = ""
    price = ""
    for book in library:
        if name == book.name:
            category = book.category
            price = book.price
    return category, price
            
def sortBook(library):
    """
    对类别排序和分类统计
    """
    library.sort(key = lambda Book: Book.category) #按类别排序
    categoryNum = {}
    for i in range(len(library)):
        if i == 0:
            categoryNum[library[i].category] = 1
            continue
        if i > 0 and library[i].category != library[i-1].category:
            categoryNum[library[i].category] = 1
        else:
            categoryNum[library[i].category] += 1
    return library, categoryNum
    

if __name__=="__main__":
    book1 = Book("python", "计算机", 50)
    book2 = Book("语文", "教材", 30)
    book3 = Book("数学", "教材", 40)
    book4 = Book("童话", "读物", 45)
    
    library = []
    library.append(book1)
    library.append(book2)
    library.append(book3)
    library.append(book4)
    
    
    library, categoryNum = sortBook(library)
    category, price = getAttr(library, "数学")
    
    print("查到name为", "数学的书,", "category:", category, ",price:", price)
    print("\n排序后:")
    for book in library:
        print("name:", book.name, ", category:", book.category, ",price:", book.price)
    print("\n统计结果:", categoryNum)