编写一个装饰器 ,判断是会员购物还是普通购物,普通购物满100元9折 ,会员购物8折 ,会员购物满200元7折.
时间: 2024-01-18 22:04:20 浏览: 31
好的,以下是一个实现上述功能的装饰器代码:
```python
def shopping_discount(func):
def wrapper(total_price, is_member=False):
if is_member:
if total_price >= 200:
discount_price = total_price * 0.7
else:
discount_price = total_price * 0.8
else:
if total_price >= 100:
discount_price = total_price * 0.9
else:
discount_price = total_price
return func(discount_price)
return wrapper
```
这个装饰器接受一个函数作为参数,然后返回一个新的函数 `wrapper`。这个新函数接受两个参数,一个是购物总价 `total_price`,另一个是是否是会员 `is_member`(默认为 `False`)。根据 `is_member` 的值和 `total_price` 的大小,计算折扣价 `discount_price`,然后调用原始函数 `func`,将折扣价传递给它。最后返回原始函数的返回值。
你可以将这个装饰器应用于一个购物函数,例如:
```python
@shopping_discount
def calculate_price(total_price):
print("应付金额:{:.2f}元".format(total_price))
```
注意:这个装饰器只是一个简单的示例,实际应用中需要考虑更多的情况,例如输入参数的类型和范围等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)