大家好,我是36度道,人生苦短,我用python~
今天写了个 “抽奖” 的一个小练习,巩固下知识点, 在此记录下来。
本次 “ 抽奖 ” 练习,只用了一个random库,用于从多个奖品中随机获取一个,所以先导入这个库
import random
然后分别设置下一、二、三等奖以及对应的奖品和奖品对应的库存
reward_info = {
'一等奖': {'空调': 1, '洗衣机': 2, '扫地机': 3},
'二等奖': {'保温杯': 2, '热水壶': 3, '电饭锅': 2},
'三等奖': {'笔记本': 2, '书包': 2, '枕头': 3}
}
接着就是抽奖的核心代码,我将它封装在了一个函数里面
def random_reward(reward):
if reward not in reward_info.keys():
print('很遗憾,没有该奖项!')
else:
# 获取该奖项的所有奖品
goods = reward_info[reward]
# 判断是否还有奖品,没有的话就终止函数,不在继续执行后面的内容
if not goods:
print('很遗憾,%s 的奖品已抽完!' % reward)
return None
# 随机获取一个奖品
reward_content = random.choice(list(goods.keys()))
print('恭喜抽中:%s' % reward_content)
# 因为已经抽中,所以库存要减一
reward_info[reward][reward_content] -= 1
# 库存减去后 判断下剩余库存是否为0,如果为0, 则在reward_info中删除该奖品
if reward_info[reward][reward_content] == 0:
del reward_info[reward][reward_content]
# 删完奖品后 判断下 该奖项是否还有奖品,如果没有奖品,则终止函数
if not reward_info[reward]:
print('%s 的奖品已抽完!' % reward)
return None
# 如果还有奖品,就显示给用户看
print('%s 的奖品还剩 %s' % (reward, str(reward_info[reward])))
最后就是调用函数了,这里为了看看三个奖项的输出情况,依次对三个奖项进行了输出,直到每个奖项的奖品都抽完为止
for i in ['一等奖', '二等奖', '三等奖']:
for _ in range(sum(list(reward_info[i].values()))):
print('-'*35)
random_reward(i)