用Python代码编写模拟微信发红包的两种发放方式。能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,能够显示红包发放情况,打印红包运气王的名单。
时间: 2024-03-20 18:40:25 浏览: 146
好的。这是一个比较有趣的问题,我很乐意回答。对于发红包的两种发放方式,我认为可以分别是:普通红包和拼手气红包。下面我将分别介绍这两种方式的实现方法,首先是普通红包。
## 普通红包发放
普通红包的发放方式比较简单,就是将总金额随机分给指定数量的人。这里给出一个 Python 代码实现:
```python
import random
def send_red_packets(num, total_money):
amounts = []
left_money = total_money
left_num = num
for i in range(num - 1):
amount = random.uniform(0.01, left_money / left_num * 2)
left_money -= amount
left_num -= 1
amounts.append(round(amount, 2))
amounts.append(round(left_money, 2))
return amounts
```
其中,num 表示要发放的红包数量,total_money 表示要发放的总金额。该函数返回一个列表,列表中的每个元素表示每个红包的金额。
## 拼手气红包发放
拼手气红包的发放方式与普通红包不同,它需要保证每个人领取的金额是随机的,但是总金额是固定的。这里给出一个 Python 代码实现:
```python
import random
def send_lucky_packets(num, total_money):
amounts = []
left_money = total_money
left_num = num
for i in range(num - 1):
amount = random.uniform(0.01, left_money - left_num * 0.01)
left_money -= amount
left_num -= 1
amounts.append(round(amount, 2))
amounts.append(round(left_money, 2))
random.shuffle(amounts)
return amounts
```
同样,num 表示要发放的红包数量,total_money 表示要发放的总金额。该函数返回一个列表,列表中的每个元素表示每个红包的金额。
## 显示红包发放情况和红包运气王
下面是一个完整的 Python 代码实现,它能够显示红包发放情况和红包运气王:
```python
import random
def send_red_packets(num, total_money):
amounts = []
left_money = total_money
left_num = num
for i in range(num - 1):
amount = random.uniform(0.01, left_money / left_num * 2)
left_money -= amount
left_num -= 1
amounts.append(round(amount, 2))
amounts.append(round(left_money, 2))
return amounts
def send_lucky_packets(num, total_money):
amounts = []
left_money = total_money
left_num = num
for i in range(num - 1):
amount = random.uniform(0.01, left_money - left_num * 0.01)
left_money -= amount
left_num -= 1
amounts.append(round(amount, 2))
amounts.append(round(left_money, 2))
random.shuffle(amounts)
return amounts
def show_packets(amounts):
for i in range(len(amounts)):
print("第{}个红包:{}元".format(i + 1, amounts[i]))
def show_lucky_winner(amounts):
max_amount = max(amounts)
max_index = amounts.index(max_amount)
print("红包运气王是第{}个人,领取了{}元".format(max_index + 1, max_amount))
if __name__ == '__main__':
num = int(input("请输入红包数量:"))
total_money = float(input("请输入总金额:"))
print("请选择红包类型:")
print("1.普通红包")
print("2.拼手气红包")
choice = int(input("请选择(1或2):"))
if choice == 1:
amounts = send_red_packets(num, total_money)
else:
amounts = send_lucky_packets(num, total_money)
print("红包发放情况如下:")
show_packets(amounts)
show_lucky_winner(amounts)
```
在运行该代码时,用户需要输入红包数量、总金额和红包类型(1 表示普通红包,2 表示拼手气红包)。然后程序会自动发放红包并输出领取情况和红包运气王。
阅读全文