模拟红包
admin
2023-07-17 11:42:59
0次
import random

def func_word():      # 红包留言模块,
    user=input('恭喜发财,大吉大利')
    def leave_word(word='  恭喜发财,大吉大利  '):
        print('-' * 15)
        print('\033[31;0m %s \033[0m' %word)
        print('-' * 15)
    if user=='':
        leave_word()
    else:
        leave_word(word=user)

def rob_func(lst):  # 抢红包模块
    def rob(lst):
        for i in lst:
            yield i

    obj = rob(lst)
    try:
        while True:
            user_o = input('>>>')
            if user_o == ' ':
                print('红包:\033[31;0m %s\033[0m 元' % (obj.__next__()))
    except StopIteration:
        print('\033[31;0m 你来晚啦 \033[0m')

def ran():  # 随机红包模块
    while True:
        money = float(input('>>>总金额 '))
        if money < 0.01:
            print('红包金额应大于0.01')
        else:
            break
    while True:
        numbers = int(input('   红包个数 '))  # 异常化处理
        if numbers * 0.01 > money:
            print('单个红包必须大与0.01')
        else:
            break

    # 产生随机的红包值  (怎样能够尽量的随机化呢   产生的红包有个特别大的,不合理,钱越大越明显)
    lst = []
    for i in range(numbers - 1):  # 直接money这样的算法第一个抢的一定是最大的红包,但微信不是这样的
        res = round(random.uniform(0, money / (numbers - i)), 2)  # money/2这样的算法是不是也有的规律呢,不行这样的话,出现的错误更多
        lst.append(res)  # 这个算法里有一个不正常的数
        money -= res
    lst.append(round(money, 2))
    random.shuffle(lst)
    func_word()
    rob_func(lst)

def ord():  # 普通红包模块   (基本能够按照预想的实现)
    while True:
        money = float(input('>>>单个金额 '))
        if money < 0.01:
            print('红包金额应大于0.01')
        else:
            break
    numbers = int(input('红包个数 '))  # 这里可以加入一个异常化处理,可以只给用户一个输入数字的键盘,这是如何实现的
    lst = []
    for i in range(numbers):
        lst.append(money)
    func_word()
    rob_func(lst)

def red_packet():    #  红包的选择模块
    lst = ['随机红包', '普通红包']
    for i in enumerate(lst, 1):
        print(i[0], i[1])
    while True:
        try:  # 这里可以加入一个异常处理,但是微信上是不会让你输数字以外的
            num = int(input('>>>>'))
            print('-' * 10)
            print(lst[num - 1])
            print('-' * 10)
            break
        except IndexError:
            print('你输入的数不对')
        except ValueError:
            print('请输入数字')
        except Exception:
            print('请重新输入')
    if num == 1:
        ran()
    if num == 2:
        ord()

red_packet()

存在的问题
想不到怎样产生一组合理的随机数,上面提到的会有特别明显的一红包产生的是特别的大,并且总的金额数越大越明显,(请教^-^)

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...