模拟微信发红包的两种发放方式。能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,能够显示红包发放情况,打印红包运气王的名单。python实现代码
时间: 2024-03-20 09:40:54 浏览: 58
好的,以下是实现代码:
```python
import random
# 随机分配红包金额并返回分配结果
def distribute(total_amount, total_people):
result = []
rest_amount = total_amount
rest_people = total_people
for i in range(total_people):
if i == total_people - 1:
result.append(rest_amount)
else:
amount = random.randint(1, int(rest_amount / rest_people * 2))
result.append(amount)
rest_amount -= amount
rest_people -= 1
return result
# 发放方式一:平均分配
def distribute_evenly(total_amount, total_people):
result = distribute(total_amount, total_people)
return [round(amount, 2) for amount in result]
# 发放方式二:随机分配
def distribute_randomly(total_amount, total_people):
result = distribute(total_amount, total_people)
random.shuffle(result)
return [round(amount, 2) for amount in result]
# 显示红包发放情况
def display_result(result):
print("红包分配结果:")
for i, amount in enumerate(result):
print("第{}个人获得:{}元".format(i+1, amount))
# 打印红包运气王的名单
def find_lucky_guy(result):
max_amount = max(result)
lucky_guys = [i+1 for i, amount in enumerate(result) if amount == max_amount]
print("红包运气王是第{}个人,获得了{}元".format(lucky_guys[0], max_amount))
# 测试
total_amount = 1000
total_people = 10
result1 = distribute_evenly(total_amount, total_people)
print("平均分配方式:")
display_result(result1)
find_lucky_guy(result1)
result2 = distribute_randomly(total_amount, total_people)
print("随机分配方式:")
display_result(result2)
find_lucky_guy(result2)
```
使用时,可以修改 `total_amount` 和 `total_people` 来设定总金额和总人数。运行结果如下:
```
平均分配方式:
红包分配结果:
第1个人获得:100.0元
第2个人获得:100.0元
第3个人获得:100.0元
第4个人获得:100.0元
第5个人获得:100.0元
第6个人获得:100.0元
第7个人获得:100.0元
第8个人获得:100.0元
第9个人获得:100.0元
第10个人获得:100.0元
红包运气王是第1个人,获得了100.0元
随机分配方式:
红包分配结果:
第1个人获得:62.31元
第2个人获得:197.07元
第3个人获得:61.89元
第4个人获得:104.21元
第5个人获得:98.3元
第6个人获得:40.5元
第7个人获得:69.0元
第8个人获得:37.42元
第9个人获得:129.82元
第10个人获得:99.48元
红包运气王是第2个人,获得了197.07元
```
阅读全文