您好,登錄后才能下訂單哦!
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()
存在的問題
想不到怎樣產生一組合理的隨機數,上面提到的會有特別明顯的一紅包產生的是特別的大,并且總的金額數越大越明顯,(請教^-^)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。