完成微信随机红包的分配,用户可以输入红包总金额,分配人数 ,随机分配可以使用random.sample函数,完成。最后按顺序给出每个人的红包大小(精确到小数点后两位)请给出测试用例
时间: 2024-09-17 09:09:00 浏览: 97
在Python中,我们可以编写一个函数来实现微信随机红包分配功能。这个函数会接收红包总金额、分配人数作为参数,并使用`random.sample()`函数生成指定数量的随机红包数额。这里是一个简单的示例:
```python
import random
def distribute_redpack(total_amount, num_people):
if total_amount < 0 or num_people <= 0:
return "请输入有效的金额和人数"
# 确保红包总额大于每个人得到的金额
min_redpack = total_amount / num_people
if min_redpack < 1:
return "无法平均分配,红包金额不足"
redpacks = [round(random.uniform(0, total_amount), 2) for _ in range(num_people)]
# 验证红包总数是否等于预期
if sum(redpacks) != total_amount:
return "红包分配有误,请检查"
return redpacks
# 测试用例
test_cases = [
{"total_amount": 50, "num_people": 3},
{"total_amount": 100, "num_people": 4},
{"total_amount": -50, "num_people": 2}, # 负面情况
{"total_amount": 0, "num_people": 1}, # 零元情况
]
for case in test_cases:
print(f"测试用例:{case['total_amount']}元给{case['num_people']}人")
result = distribute_redpack(**case)
print(f"红包分配结果:{' '.join(map(str, result))}")
print("\n---\n") # 分割每个测试用例的结果
```
在这个例子中,我们创建了一个测试用例列表,包括正常情况(足够金额和人数)、部分负数情况、以及零元或人数为零的情况。每个测试用例都会打印出分配结果。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.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)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)