Python_程序实现发红包

发红包

200块钱  20个红包

将200块随机分成20份  

基础版本:

 1 import random
 2 
 3 
 4 ret = random.sample(range(1, 200 * 100), 19)
 5 ret =  ret.sort()
 6 ret.insert(0, 0)
 7 ret.append(200 * 100)
 8 l = []
 9 
10 for  i in range(10):
11   l.append((ret[i + 1] - ret[i]) / 100)
12 
13 print(l)

 

 

函数版本:

import random


def red_packet(money, num):
    ret = random.sample(range(1, money * 100), num - 1)
    ret =  ret.sort()
    ret.insert(0, 0)
    ret.append(money * 100)

    for  i in range(num):
      l.append((ret[i + 1] - ret[i]) / 100)
    
    return l

ret = red_packet(100, 10)
print(ret)

 

 列表推导式版本:

import random


def red_packet(money, num):
    ret = random.sample(range(1, money * 100), num - 1)
    ret =  ret.sort()
    ret.insert(0, 0)
    ret.append(money * 100)

    return [(ret[i + 1] - ret[i]) / 100 for  i in range(num)]
   
ret = red_packet(100, 10)
print(ret)

 

 

进阶版:

 1 import random
 2 
 3 
 4 def red_packet(money, num):
 5     ret = random.sample(range(1, money * 100), num - 1)
 6     ret.extend([0, money * 100])  # 改进点
 7     ret =  ret.sort()
 8 
 9     return [(ret[i + 1] - ret[i])/100 for  i in range(num)]
10    
11 ret = red_packet(100, 10)
12 print(ret)

 

 

生成器版

 1 import random
 2 
 3 
 4 def red_packet(money, num):
 5     ret = random.sample(range(1, money * 100), num - 1)
 6     ret.extend([0, money * 100])
 7     ret.sort()
 8     
 9     for i in range(num):
10         yield (ret[i + 1] - ret[i]) / 100
11 
12 red_packet(100, 10)

 

转载于:https://www.cnblogs.com/ZN-225/p/9613965.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值