声明一个书的类,自定义要抽象的属性与行为,至少要求有书名、类别、价格, 定义类的构造函数。 在主函数中定义若干本书,添加到数组中。 (1)对书本的价格按类别进行排序、统计。 (2)可以按书名查找其对应的类别与价格
时间: 2024-02-11 20:05:24 浏览: 62
类的各种函数
好的,这是你的第一个问题。
首先,我来声明一个书的类,满足你的要求:
```python
# 定义书的类
class Book:
def __init__(self, name, category, price):
self.name = name
self.category = category
self.price = price
# 重写__str__方法,打印实例时方便查看
def __str__(self):
return f"书名:{self.name},类别:{self.category},价格:{self.price}"
```
在这个类中,我们有三个属性:书名、类别、价格。构造函数中,我们需要传入这三个属性。同时,我们还重写了 `__str__` 方法,方便在打印实例时查看实例的属性值。
接下来,我们在主函数中定义若干本书,添加到数组中:
```python
# 主函数
if __name__ == '__main__':
# 定义多个书本
book1 = Book("Python编程从入门到实践", "编程", 89.0)
book2 = Book("机器学习实战", "人工智能", 78.0)
book3 = Book("算法图解", "算法", 49.0)
book4 = Book("百年孤独", "文学", 35.0)
book5 = Book("时间简史", "科普", 29.0)
# 添加到数组中
book_list = [book1, book2, book3, book4, book5]
```
现在,我们有了一个包含多本书的列表 `book_list`。
接下来,我们来解决你的两个问题:
1. 对书本的价格按类别进行排序、统计。
为了实现这个功能,我们可以先将 `book_list` 中的书籍按照类别进行分类,然后再对每个类别中的书籍按价格进行排序,最后统计每个类别中书籍的价格总和。
```python
# 按类别进行分类
category_dict = {}
for book in book_list:
if book.category in category_dict:
category_dict[book.category].append(book)
else:
category_dict[book.category] = [book]
# 对每个类别中的书本按价格排序
for category in category_dict:
category_dict[category].sort(key=lambda x: x.price)
# 统计每个类别中书本的价格总和
for category in category_dict:
total_price = sum([book.price for book in category_dict[category]])
print(f"{category} 类别的总价格为:{total_price}")
```
运行上面的代码,输出结果如下:
```
编程 类别的总价格为:89.0
人工智能 类别的总价格为:78.0
算法 类别的总价格为:49.0
文学 类别的总价格为:35.0
科普 类别的总价格为:29.0
```
2. 可以按书名查找其对应的类别与价格。
为了实现这个功能,我们可以遍历 `book_list`,找到书名为目标书名的书籍,然后输出该书籍的类别和价格。
```python
# 按书名查找类别和价格
target_book_name = "百年孤独"
for book in book_list:
if book.name == target_book_name:
print(f"{target_book_name} 的类别为:{book.category},价格为:{book.price}")
break
```
运行上面的代码,输出结果如下:
```
百年孤独 的类别为:文学,价格为:35.0
```
好了,以上就是你的问题的解答。
阅读全文