python模拟微信发红包的两种发放方式。能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,能够显示红包发放情况,打印红包运气王的名单;并且调用文件里面的人物
时间: 2024-03-21 08:42:37 浏览: 41
好的,这是一个比较有趣的问题!首先,我们需要明确两种发放方式。第一种是平均分配法,即将红包金额平均分配给领取红包的每个人。第二种是随机分配法,即将红包金额随机分配给领取红包的每个人。下面是两种发放方式的实现,并且能够读取文件里面的人物。
```python
import random
# 定义一个函数,用于读取文件里面的人物
def read_file(filename):
with open(filename, 'r') as f:
lines = f.readlines()
return [line.strip() for line in lines]
# 平均分配法
def average_red_packet(num_people, total_amount):
amount = total_amount / num_people
result = [amount] * num_people
return result
# 随机分配法
def random_red_packet(num_people, total_amount):
result = []
remain_amount = total_amount
remain_people = num_people
for i in range(num_people):
if remain_people == 1:
result.append(remain_amount)
else:
amount = random.randint(1, remain_amount - remain_people + 1)
result.append(amount)
remain_amount -= amount
remain_people -= 1
return result
# 测试代码
if __name__ == '__main__':
filename = 'people.txt'
people = read_file(filename)
num_people = len(people)
total_amount = 100 # 发放的红包总金额
print('红包总金额:', total_amount)
print('领取红包的人数:', num_people)
print()
# 平均分配法
print('平均分配法:')
red_packets = average_red_packet(num_people, total_amount)
for i in range(num_people):
print('{}领取了{}元'.format(people[i], red_packets[i]))
print()
# 随机分配法
print('随机分配法:')
red_packets = random_red_packet(num_people, total_amount)
for i in range(num_people):
print('{}领取了{}元'.format(people[i], red_packets[i]))
print()
# 找到红包运气王
max_amount = max(red_packets)
luckiest = []
for i in range(num_people):
if red_packets[i] == max_amount:
luckiest.append(people[i])
print('红包运气王:', ','.join(luckiest))
```
需要注意的是,我们在读取文件里面的人物时,使用了`strip()`函数来去除每行末尾的换行符。这是因为在文件中,每行末尾都有一个换行符。如果不去除的话,会影响后面对人物的处理。另外,需要确保人物的数量不小于领取红包的人数,否则程序会出现错误。
阅读全文