首页 > 编程语言 > 详细

python 练习题- 红包取值

时间:2021-03-08 09:23:23      阅读:23      评论:0      收藏:0      [点我收藏+]

题目:

1 红包算法
2 1.输入是人数,总金额。输出是每个人的金额
3 2.多人红包,最大的不得超过总额的80%

 

代码:

 1 # @Author  :whyCai
 2 # @Time    :2021/3/4 22:15
 3 
 4 ‘‘‘
 5 红包算法,输入是人数,总金额。输出是每个人的红包金额,拿的最多的人应有标示。
 6 额外要求:多人红包下,拿的最多的人,不得超过总额的80%.
 7 ‘‘‘
 8 import random
 9 
10 def getRed(money,num,maxNum=0.8,min=0.01,switch=1):
11     ‘‘‘
12     求随机数
13     :param money: 总金额
14     :param num: 人数
15     :param maxNum: 个人最大值的系数(总金额的百分比)
16     :param min: 最小值
17     :param switch: 1:随机数 第一个人获得大的金额数概率较大 其他:最大值按照 剩余金额/(剩余人数/2)的方式取值
18     :return: 
19     ‘‘‘
20     money = round(float(money),2)
21     max = money * maxNum
22     num = int(num)
23     if num == 1:
24         print(总人数:{num},红包金额:{money}.format(num=num,money=money))
25 
26     total = money
27     if num > 1:
28         for i in range(num):
29             if i != num-1:
30                 ranMax = int(max*100-(num-i-1)*min*100)
31                 if switch !=1:
32                     mid = 2 if num - i -1 < 2 else int((num - i - 1)/2)
33                     ranMax = round(ranMax/mid)
34                 ranRed = random.randint(min*100, ranMax)
35                 ranRedFloat = float(ranRed/100)
36                 total = round((total - ranRedFloat),2)
37                 if total < max:
38                     max = total
39             else:
40                 ranRedFloat = total
41                 total = 0
42             print(总人数:{num},第{n}个人的红包金额:{money},剩余红包金额:{moneyOther}.format(num=num, n=i+1,money=ranRedFloat,moneyOther=total))
43 getRed(100,10,0.8,0.01,2)

 

python 练习题- 红包取值

原文:https://www.cnblogs.com/whycai/p/14487245.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!