编写一个函数,简单模拟微信红包发红包算法。 函数有两个参数:一个参数表示红包总金额(默认值为100);另一个参数表示红包数量,默认值为15. 所有随机产生的红包金额(保留两位小数)存放在一个列表(同时作为函数的返回值)中,单个红包金额最少0.01元,所有红包金额之和应等于红包总金额。 最后在主程序中测试该函数,要求对函数的默认值也进行测试。
时间: 2023-06-08 18:09:29 浏览: 1026
好的,我知道了你的要求。以下是对你的问题的回答:
```python
import random
def send_red_envelope(total_amount=100, num=15):
min_amount = 0.01
remain_amount = total_amount
remain_num = num
result = []
for i in range(num - 1):
avg = remain_amount / remain_num
money = round(random.uniform(min_amount, avg * 2), 2)
result.append(money)
remain_amount -= money
remain_num -= 1
result.append(round(remain_amount, 2))
return result
print(send_red_envelope()) # 默认值测试
print(send_red_envelope(200, 10)) # 自定义参数测试
```
解释一下代码:
首先定义一个函数 `send_red_envelope`,它有两个参数 `total_amount` 和 `num`,分别表示红包总金额和红包数量,且都有默认值。
然后根据题目要求,设置单个红包金额最少为0.01元。因此,我们需要在每次随机生成红包金额时,将生成范围限定在最小值和平均值的两倍之间。
接着,使用变量 `remain_amount` 和 `remain_num` 来记录剩下的金额和数量,循环随机生成红包金额,并更新剩余金额和剩余数量,直到红包数量为1时,直接将剩余的金额添加到结果列表中。
最后,将结果列表作为函数的返回值。
在主程序中,我们分别测试了函数的默认值和自定义参数的情况,并打印出结果列表。
希望这个函数能够帮到你!
阅读全文