不理解
发表在Python图书答疑
2019-10-19
悬赏:1 学分
《零基础学Python》第5章 字符串及正则表达式 158页-158页
是否精华
是
否
版块置顶:
是
否
# decimal意思为十进制,这个模块提供了十进制浮点运算支持。
from decimal import Decimal
import random # 提供了随机方法
print('------------模拟微信抢红包------------------')
total = input('请输入要装入红包的总金额(元):')
num = input('请输入红包的个数(个):')
min = 0.01 # 每个人最少能收到0.01元
money_list = [] # 创建红包列表
total = Decimal(total) # 转换红包金额为十进制,方便后期计算
num = Decimal(num) # 转换红包个数为十进制,方便后期计算
min = Decimal(str(min)) # 转换最小红包数为十进制,方便后期计算
if total > num * min:
# 根据红包个数进行循环,从1开始,所以随机出来的会少1个红包。
for i in range(1,int(num)):
# 根据循环到的红包个数,判断随机安全上限,不至于红包m没有每人最少0.01
safe_total = (total - (num - i) * min)
# 随机出(获取红包金额)
temp_min = min * 100 # 随机的最小值
temp_max = int(safe_total * 100) # 随机的最大值
money = temp_min / 100 if temp_min > temp_max else(Decimal(random.randint(temp_min,temp_max)))/100
total -= money # 重置总金额,减去随机出的金额
money_list.append(money) # 保存最后一个元到红包数组,不足红包数量
money_list.append(total) # 随机打乱列表顺序
random.shuffle(money_list)
for x in range(len(money_list)): # 输出结果
print('第' + str(x + 1) + '个红包:' + str(money_list[x]) + '元')其中
temp_min = min * 100 # 随机的最小值 temp_max = int(safe_total * 100) # 随机的最大值 money = temp_min / 100 if temp_min > temp_max else(Decimal(random.randint(temp_min,temp_max)))/100
为什么要乘100了再除100?
这行代码是什么意思?
safe_total = (total - (num - i) * min)
为什么这个会是最大值?
temp_max = int(safe_total * 100) # 随机的最大值
于2019-10-19 12:30:39编辑

购物车
发表新帖
立即签到







