python随机发红包

您所在的位置:网站首页 微信红包个数总和怎么删除啊 python随机发红包

python随机发红包

2024-07-12 08:51| 来源: 网络整理| 查看: 265

直接上代码吧

# -*- coding: utf-8 -*-

from decimal import Decimal, InvalidOperation

import random

def money_val(min, max):

return min if min > max else Decimal(str(random.randint(min, max)))

def money_random(total, num, min=0.01):

"""

:param total=10; # 红包总额 10 元

:param num=8; # 分成 8 个红包,支持 8 人随机领取

:param min=0.01; # 每个人最少能收到 0.01 元

"""

money_list = []

try:

total = Decimal(str(total))

except InvalidOperation as e:

return money_list, e.message

try:

if isinstance(num, float) and int(num) != num:

raise ValueError(u'Invalid value for Num: \'{0}\''.format(num))

num = Decimal(str(int(num)))

except ValueError as e:

return money_list, e.message

try:

min = Decimal(str(min))

except InvalidOperation as e:

return money_list, e.message

if total < num * min:

return money_list, u'Invalid value for Total-{0}, Num-{1}, Min-{2}'.format(total, num, min)

for i in xrange(1, num):

safe_total = (total - (num - i) * min) / (num - i) # 随机安全上限

money = money_val(min * 100, int(safe_total * 100)) / 100

total -= money

money_list.append(money)

money_list.append(total)

random.shuffle(money_list) # 随机打乱

return money_list, u'Success'

if __name__ == '__main__':

print money_random(100, 5)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3