随机抽奖选人,有1-5等奖,输入1,2,3,4,5可输出1-5等奖中奖名单,主要有三种方法实现,都需要先导入random。
if name == ‘main’:可以使代码从后开始先运行,可以调用前面的函数。
方法1
通过定义函数实现,易理解但代码多。
代码展示:
import random
def First_prize():
list1 = random.choice(list_all)
list_all.remove(list1)
print(f'一等奖为:{list1}')
def Second_Prize():
list2 = random.sample(list_all, 1)
list_all.remove(list2[0])
print(f'二等奖为:{list2}')
def Third_prize():
list3 = random.sample(list_all, 2)
list_all.remove(list3[0])
list_all.remove(list3[1])
print(f'三等奖为:{list3}')
def Fourth_prize():
list4 = random.sample(list_all, 2)
list_all.remove(list4[0])
list_all.remove(list4[1])
print(f'四等奖为:{list4}')
def Fifth_prize():
list5 = random.sample(list_all, 1)
list_all.remove(list5[0])
print(f'五等奖为:{list5}')
if __name__ == '__main__':
list_all =['ajy1','ajy2','ajy3','ajy4','ajy5','ajy6','ajy7','ajy8','ajy9','ajy10','ajy11','ajy12','ajy13','ajy14']
print('1:一等奖','2:二等奖','3:三等奖','4:四等奖','5:五等奖',sep=' ')
for i in range(5):
n =input('请输入抽奖级别:')
if n == '1':
Fifth_prize()
elif n == '2':
Second_Prize()
elif n == '3':
Third_prize()
elif n == '4':
Fourth_prize()
elif n == '5':
Fifth_prize()
print()
print(' '.join(list_all),end=' ')
print('很遗憾未获奖')
运行结果:
方法2
for i ,j,num in list单循环获取多个元素 代码展示:
import random
def quchu_name(name_jiang):
for i in name_jiang:
for j in list_all:
if i == j:
list_all.remove(j)
def choujiang(n):
for i,j,num in liat_jiang:
if i == int(n):
name_jiang = random.sample(list_all,num)
quchu_name(name_jiang)
info = f"恭喜{','.join(name_jiang)} 中得{j}等奖!"
print(info)
if __name__ == '__main__':
list_all =['ajy1','ajy2','ajy3','ajy4','ajy5','ajy6','ajy7','ajy8','ajy9','ajy10','ajy11','ajy12','ajy13','ajy14']
liat_jiang =[
(1,'一等奖',1),
(2,'二等奖',1),
(3,'三等奖',2),
(4,'四等奖',2),
(5,'五等奖',1)
]
print('1:一等奖', '2:二等奖', '3:三等奖', '4:四等奖', '5:五等奖', sep=' ')
for i in range(5):
n = input('请输入抽奖级别:')
choujiang(n)
print(f"很遗憾{','.join(list_all)} 未中奖。")
运行结果:
方法3
使用yield返回输出,不能选择。 代码展示:
import random
def chou_jiang(l1):
for i, num, goods in jiang_xiang:
print(f"正在抽取{i}".center(50, '-'))
name_list = random.sample(l1,num)
# 将中奖名单从原名单中删除
for n in name_list:
if n in l1:
l1.remove(n)
info = f"恭喜{','.join(name_list)} 中得{i}!!!!"
yield info
list1 = ['ajy1', 'ajy2', 'ajy3', 'ajy4', 'ajy5', 'ajy6', 'ajy7','ajy8','ajy9','ajy10']
jiang_xiang = [
('一等奖', 1, 'mate70 pro'),
('二等奖', 1, '小米手环'),
('三等奖', 2, '按摩仪'),
('四等奖', 2, '京东购物卡'),
('五等奖', 1, '无')
]
chou_jiang(list1)
res1 = chou_jiang(list1)
input("开始抽一等奖....按下回车开始!")
print(res1.__next__())
input("开始抽二等奖....按下回车开始!")
print(res1.__next__())
input("开始抽三等奖....按下回车开始!")
print(res1.__next__())
input("开始抽四等奖....按下回车开始!")
print(res1.__next__())
input("开始抽五等奖....按下回车开始!")
print(res1.__next__())
运行结果: