鱼C论坛

 找回密码
 立即注册
查看: 2959|回复: 1

[技术交流] Python 模拟抢红包

[复制链接]
发表于 2020-1-30 16:01:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import random as r


  2. def red_packet(total: float, person_num: int):
  3.     """
  4.     模拟抢红包

  5.     参数
  6.     -----
  7.         total: float
  8.             红包总金额
  9.         person_num: int
  10.             总人数

  11.     返回值
  12.     -----
  13.     list
  14.         每人抢到的金额总数
  15.     """
  16.     # 处理非法情况
  17.     if person_num <= 0:
  18.         return []

  19.     a, b = total, person_num

  20.     total *= 100

  21.     res = []
  22.     for _ in range(person_num - 1):
  23.         f = r.randint(1, total // person_num * 3)
  24.         res.append(round(f / 100, 2))
  25.         person_num -= 1
  26.         total -= f
  27.     if total < 0.01:
  28.         return red_packet(a, b)
  29.     res.append(round(total / 100, 2))
  30.     return res


  31. if __name__ == '__main__':
  32.     print(red_packet(8.88, 10))
  33.     print(red_packet(150, 20))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
weiter + 1 + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-31 19:30:27 | 显示全部楼层
谢谢楼主分享!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 07:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表