题目:模拟抢红包。输入数据是一行,含有一个浮点数和一个整数, 分别表示红包总金额amount和数量n。输出n个浮点数,分别表示 每个人抢到的金额(至少0.01),且总和必须等于amount。 假定用户的键盘输入没有错误,程序无需对其进行错误处理。 提示:使用random.randint(a,b)可以得到整数a到b之间的一个 随机整数(包含a和b)。 --------------------------------------------------------- 注意:仅在注释标志之间填入所编写的若干语句,请勿改动其余部分。 ------------------------------------------------------''' import random def dispatch(amount, n): """函数参数为红包总金额amount和数量n。 返回一个列表,包含n个浮点数,分别表示每个人抢到的金额 (至少0.01),且总和必须等于amount。""" #**********Program********** #********** End ********** amount=float(input('请输入红包总金额:')) n=int(input('请输入红包数量:')) answer=dispatch(amount, n) for x in answer: print('%.2f'%x, end=' ')根据要求编写代码
时间: 2023-07-18 14:53:30 浏览: 80
import random
def dispatch(amount, n):
"""函数参数为红包总金额amount和数量n。
返回一个列表,包含n个浮点数,分别表示每个人抢到的金额
(至少0.01),且总和必须等于amount。"""
result = []
remain_amount = amount
remain_num = n
for i in range(n-1):
# 随机分配金额
money = random.uniform(0.01, remain_amount/remain_num*2)
result.append(money)
remain_amount -= money
remain_num -= 1
result.append(remain_amount)
return result
# 主程序
amount, n = map(float, input().split())
answer = dispatch(amount, int(n))
for x in answer:
print('%.2f'%x, end=' ')
阅读全文