编写一个模拟幸运转盘程序,自动随机产生一等奖至五等奖,每 个奖项对应的奖品在字典dict存储。每个奖品只有 一个 奖品抽出后只能 在剩下的奖品中抽取。每次抽完需要输入获奖人的手机号码,所有奖品 抽完游戏结束。 1:
时间: 2023-07-15 21:10:43 浏览: 186
用随机函数编写的幸运抽奖程序
5星 · 资源好评率100%
好的,我来帮你编写这个模拟幸运转盘程序。首先,我们需要定义奖品和对应的数量,以及每个奖品的中奖概率。我们可以将这些信息存储在一个字典中,例如:
```
prizes = {
"一等奖": {
"数量": 1,
"概率": 0.01,
"奖品": "iPhone 12",
"中奖人": []
},
"二等奖": {
"数量": 2,
"概率": 0.02,
"奖品": "iPad Air",
"中奖人": []
},
"三等奖": {
"数量": 5,
"概率": 0.05,
"奖品": "Apple Watch",
"中奖人": []
},
"四等奖": {
"数量": 10,
"概率": 0.1,
"奖品": "AirPods Pro",
"中奖人": []
},
"五等奖": {
"数量": 20,
"概率": 0.2,
"奖品": "50元话费",
"中奖人": []
}
}
```
其中,每个奖项的数量和中奖人先初始化为空列表。接下来,我们需要实现抽奖的函数,具体实现如下:
```python
import random
def lottery(prizes):
total_prob = sum([prizes[p]["概率"] for p in prizes])
rand_num = random.uniform(0, total_prob)
prob_accum = 0
for p in prizes:
prob_accum += prizes[p]["概率"]
if rand_num <= prob_accum:
if prizes[p]["数量"] > 0:
prizes[p]["数量"] -= 1
phone_num = input("恭喜您获得了{},请输入手机号码:".format(prizes[p]["奖品"]))
prizes[p]["中奖人"].append(phone_num)
print("获奖人列表:", prizes[p]["中奖人"])
return True
else:
print("{}已经被抽完了,请重新抽取".format(prizes[p]["奖品"]))
return False
```
在抽奖函数中,我们先计算出所有奖项概率的总和,然后生成一个随机数来决定中哪个奖项。接着,我们判断该奖项是否还有剩余数量,如果有,就让中奖人输入手机号码并将其加入中奖人列表中,并返回True表示抽奖成功。如果该奖项已经被抽完了,就返回False表示抽奖失败。
最后,我们可以在一个循环中不断调用抽奖函数来模拟幸运转盘的过程,直到所有奖品都被抽完为止。具体实现如下:
```python
while True:
if all([prizes[p]["数量"] == 0 for p in prizes]):
print("所有奖品都已经被抽完了,游戏结束!")
break
lottery(prizes)
```
在循环中,我们先判断所有奖品是否都已经被抽完了,如果是,就输出游戏结束的提示并退出循环。否则,就调用抽奖函数来进行抽奖。
阅读全文