模拟微信发红包的两种发放方式。能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,能够显示红包发放情况,打印红包运气王的名单。python
时间: 2024-03-05 12:48:03 浏览: 87
好的,这是一个比较完整的问题,我可以为你提供一个基于 Python 的解决方案。
首先,我们需要定义两种发放方式:
1. 等额红包:指定红包金额和领取人数,平均分配红包金额。
2. 随机红包:指定红包金额和领取人数,随机分配红包金额。
代码如下:
```python
import random
# 等额红包
def equal_red_packet(total_money, total_num):
each_money = total_money / total_num
return [each_money for i in range(total_num)]
# 随机红包
def random_red_packet(total_money, total_num):
result = []
remain_money = total_money
remain_num = total_num
for i in range(total_num - 1):
# 随机分配金额
money = random.randint(1, remain_money - remain_num + 1)
result.append(money)
remain_money -= money
remain_num -= 1
# 最后一个红包直接分配剩余金额
result.append(remain_money)
return result
# 显示红包发放情况
def show_red_packet(red_packet):
for i, money in enumerate(red_packet):
print("第{}个人领取了{}元".format(i+1, money))
# 打印红包运气王的名单
def print_lucky_dog(red_packet):
max_money = max(red_packet)
lucky_dog_list = [i+1 for i, money in enumerate(red_packet) if money == max_money]
print("红包运气王是:", lucky_dog_list)
# 使用示例
if __name__ == "__main__":
# 等额红包
print("等额红包示例:")
total_money = 100
total_num = 5
red_packet = equal_red_packet(total_money, total_num)
show_red_packet(red_packet)
print_lucky_dog(red_packet)
# 随机红包
print("随机红包示例:")
total_money = 100
total_num = 5
red_packet = random_red_packet(total_money, total_num)
show_red_packet(red_packet)
print_lucky_dog(red_packet)
```
注意,随机红包的实现需要注意以下几点:
1. 最后一个红包直接分配剩余金额,因为随机分配可能存在小数点精度问题。
2. 随机分配金额时需要考虑已经分配的金额和还未分配的人数,保证每个人都有机会获得一定的金额。
希望这个代码对你有帮助!
阅读全文