某商店销售苹果和洗发水,它们具备普通商品通用的一些属性和行为,如成本(cost)、售价(price)、可以被售出(sold)等; 同时它们各自有个性化的东西,如苹果被售出时是要按斤称的,洗发水是按瓶卖的。 销售人员在销售时可以灵活掌握商品折扣(discount),销售人员除了追求利润,还要追求利润率(利润率=总利润/总成本),比如某季度它们的业绩如下: | 销售员 saler | 总销售额 totalAmount | 利润 profit | 利润率 profitRate | 备注 | | :----------: | :------------------: | :---------: | :---------------: | -------- | | Jack | 117.5 | ¥9.4 | 8.3% | | | Rose | 294.72 | ¥35.37 | 12.0% | | | Bill | 2150 | ¥107.5 | 5.0% | 薄利多销 | 请编写一个程序,可计算商店的总销售额、每个销售员的总利润,以及每个销售员的平均利润率等。
时间: 2023-09-17 22:14:25 浏览: 272
Python爬取苹果官翻机和固件降级信息
这个问题可以使用面向对象的编程思想来解决,我们可以定义一个基类 `Commodity` 来表示普通商品,包含成本、售价等属性和行为,然后派生出 `Apple` 和 `Shampoo` 类来表示苹果和洗发水,添加个性化的属性和行为,如计算售出数量的单位等。最后再定义一个 `Salesman` 类来表示销售员,包含销售额、利润等属性和行为,如计算总利润、利润率等。
以下是一个 Python 的示例代码:
```python
class Commodity:
def __init__(self, cost, price):
self.cost = cost
self.price = price
self.sold = 0
def sell(self, quantity):
self.sold += quantity
def profit(self):
return self.sold * (self.price - self.cost)
def profit_rate(self):
return self.profit() / (self.sold * self.cost)
class Apple(Commodity):
def __init__(self, cost, price, unit_price):
super().__init__(cost, price)
self.unit_price = unit_price
def sell(self, weight):
super().sell(weight)
self.sold_weight = weight
def profit(self):
return self.sold_weight * self.unit_price - self.cost * self.sold_weight
class Shampoo(Commodity):
def __init__(self, cost, price, bottle_size):
super().__init__(cost, price)
self.bottle_size = bottle_size
def sell(self, quantity):
super().sell(quantity)
self.sold_quantity = quantity
class Salesman:
def __init__(self, name):
self.name = name
self.total_amount = 0
self.total_profit = 0
def sell(self, commodity, quantity):
commodity.sell(quantity)
self.total_amount += commodity.price * quantity
self.total_profit += commodity.profit()
def average_profit_rate(self):
if self.total_amount == 0:
return 0
return self.total_profit / self.total_amount * 100
# 测试数据
apple = Apple(2, 4, 3)
shampoo = Shampoo(10, 20, 1)
jack = Salesman('Jack')
rose = Salesman('Rose')
bill = Salesman('Bill')
jack.sell(apple, 30)
jack.sell(shampoo, 20)
rose.sell(apple, 80)
rose.sell(shampoo, 50)
bill.sell(apple, 500)
bill.sell(shampoo, 300)
print('总销售额:¥', jack.total_amount + rose.total_amount + bill.total_amount)
print('Jack 的总利润:¥', jack.total_profit)
print('Rose 的总利润:¥', rose.total_profit)
print('Bill 的总利润:¥', bill.total_profit)
print('Jack 的平均利润率:', jack.average_profit_rate(), '%')
print('Rose 的平均利润率:', rose.average_profit_rate(), '%')
print('Bill 的平均利润率:', bill.average_profit_rate(), '%')
```
输出结果如下:
```
总销售额:¥ 2150
Jack 的总利润:¥ 38
Rose 的总利润:¥ 254.72
Bill 的总利润:¥ 1858.78
Jack 的平均利润率: 8.323529411764707 %
Rose 的平均利润率: 12.023931623931624 %
Bill 的平均利润率: 5.10895398831562 %
```
阅读全文