1.實現(xiàn)微信搶紅包 簡易demo版 :
代碼如下:
from decimalimport Decimal
# 提供了隨機方法
import random
print('$$$$$$weichat模擬微信搶紅包$$$$')
total =input('請輸入要裝入紅包的總金額(元):')
num =input('請輸入紅包的個數(shù)(個):')
min =0.01? # 每個人最少能收到 0.01 元
# 創(chuàng)建紅包列表
money_list = []
# 轉換紅包金額為十進制 方便后期計算
total = Decimal(total)
# 轉換紅包個數(shù)為十進制 方便后期計算
num = Decimal(num)
# 轉換最小紅包數(shù)為十進制 方便后期計算
min = Decimal(str(min))
# 判斷紅包金額是否 大于每個 紅包個數(shù)*每個人最少獲得的0.01
if total > num * min:
# 根據(jù)紅包個數(shù)進行循環(huán) 重1開始 所以隨機出來的會少1個紅包
? ? for iin range(1,int(num)):
# 根據(jù)循環(huán)到的紅包個數(shù) 判斷隨機安全上限 不至于紅包沒人最少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_maxelse (Decimal(random.randint(temp_min, temp_max)))/100
? ? ? ? # 重置總金額 減去隨機出的金額
? ? ? ? total -= money
# 添加隨機出的金額到 紅包列表
? ? ? ? money_list.append(money)
#保存最后一個元素到紅包數(shù)組 不足紅包數(shù)量
? ? money_list.append(total)
# 隨機打亂列表順序
? ? random.shuffle(money_list)
for xin range(len(money_list)):# 輸出結果
? ? ? ? print('第'+str(x+1)+'個紅包:'+str(money_list[x])+'元')
2.效果圖
輸入界面:
? ?當輸入的金額為0時 紅包個數(shù) 大于0時 不輸出任何內容