声明一个书的类,自定义要抽象的属性与行为,至少要求有书名、类别、价格, 定义类的构造函数。 在主函数中定义若干本书,添加到数组中。 (1)对书本的价格按类别进行排序、统计。 (2)可以按书名查找其对应的类别与价格(基础Python程序编写)
时间: 2024-02-09 16:13:25 浏览: 63
在Python中定义和使用抽象类的方法
5星 · 资源好评率100%
好的,我知道你的要求了。我可以帮你完成这个任务。
首先,我们来声明一个书的类,代码如下:
```python
class Book:
def __init__(self, title, category, price):
self.title = title
self.category = category
self.price = price
```
在这个类中,我们定义了三个属性:书名、类别和价格,并且在构造函数中初始化了这些属性。
接下来,我们可以在主函数中定义若干本书并添加到数组中,代码如下:
```python
books = []
books.append(Book("Python编程从入门到实践", "编程", 59.80))
books.append(Book("深入浅出设计模式", "编程", 42.00))
books.append(Book("数学之美", "科普", 69.00))
books.append(Book("人类简史", "历史", 45.00))
books.append(Book("红楼梦", "小说", 28.00))
```
我们定义了五本书,分别为两本编程书、一本科普书、一本历史书和一本小说。这些书被添加到了一个名为 `books` 的数组中。
接下来,我们可以按照类别对书本的价格进行排序并统计,代码如下:
```python
from collections import defaultdict
# 按类别对书本价格进行排序
books.sort(key=lambda book: book.category)
# 统计每个类别的总价格和书的数量
stats = defaultdict(lambda: {"total_price": 0, "count": 0})
for book in books:
stats[book.category]["total_price"] += book.price
stats[book.category]["count"] += 1
# 输出统计结果
for category, info in stats.items():
print(f"{category}: {info['count']}本, 总价{info['total_price']}元")
```
在这段代码中,我们使用了 Python 的 `defaultdict` 来统计每个类别的总价格和书的数量。然后,我们按照类别对书本价格进行排序,并输出了统计结果。
最后,我们可以按照书名查找其对应的类别与价格,代码如下:
```python
def search_book(title):
for book in books:
if book.title == title:
return book.category, book.price
return None
# 查找书名为"数学之美"的书的类别与价格
result = search_book("数学之美")
if result:
category, price = result
print(f"书名为'数学之美'的书的类别为'{category}',价格为{price}元")
else:
print("找不到书名为'数学之美'的书")
```
在这段代码中,我们定义了一个名为 `search_book` 的函数,可以根据书名查找其对应的类别与价格。我们使用这个函数查找书名为"数学之美"的书,并输出了结果。
希望这个程序可以满足你的需求。
阅读全文