首页 > 编程语言 > 详细

Python_程序实现发红包

时间:2018-09-09 16:28:31      阅读:397      评论:0      收藏:0      [点我收藏+]

发红包

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)

 

Python_程序实现发红包

原文:https://www.cnblogs.com/ZN-225/p/9613965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!