小案例--python编写设置拼手气红包模块
Posted 木子小世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小案例--python编写设置拼手气红包模块相关的知识,希望对你有一定的参考价值。
**此案例主要锻炼python基础逻辑思维能力
**小编个人一直以为,看懂理解不难,难的是自行想到全部逻辑
拼手气红包发放,需满足:
设定金额与数量
金额最大为运气王
随机分配金额
# 附有多个输出用来解释每行代码
import random
def giveredpackets(total, num):
print(红包共元,分份.format(total, num))
each = []
already = 0
average = total / num # 平均金额
print(average--, average)
for i in range(1, num):
print(i---------------:, i)
# 为当前抢红包的随机分配,至少给剩下的人每人留平均金额
print(total-already钱剩余:, total - already)
print(剩下人一共分此以上---, (num - i) * average)
t1 = random.uniform(0, (total - already) - (num - i) * average)
t = round(t1, 2)
# round参数第一个是需要四舍五入的数,第二个是小数点后位数
print(这次红包-----, t)
each.append(t)
print(现在红包序列---, each)
already += t
print(现已分配的总金额---, already)
print(----------------------------------------------)
# 剩下所有钱发给最后一个人
each.append(round(total - already, 2)) # 剩下的钱四舍五入 加入队列
print(运气王:, max(each)) # 我自己写的用这个也许在想不到的地方会有风险
# 下面是标准的 将表排序从小到大,用列表下标的方式 获取最后一个数字为最大的金额
print(运气王:, sorted(each)[num - 1])
random.shuffle(each) # 将类表中的数据顺序打乱 随机排列
print(最终红包序列-------:, each)
return each
if __name__ == __main__:
total, num = 10, 6
giveredpackets(total, num)
代码结果(最后几行):
以上是关于小案例--python编写设置拼手气红包模块的主要内容,如果未能解决你的问题,请参考以下文章
拼手气红包算法,保证金额不会随前后顺序进入而变化,微信的红包生成算法改编
拼手气红包算法,保证金额不会随前后顺序进入而变化,微信的红包生成算法改编