循环进行抽奖,按一次回车进行一次抽奖(一共10人),抽四人且其中有一个人固定不变
import random
people = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
while True:
input_str = input("按回车键进行抽奖:")
if input_str == "":
# 随机打乱人员顺序
random.shuffle(people)
# 选定固定人员"1"并从剩下的九个人中随机抽取三人
winners = ["1"] + random.sample(people[1:], 3)
print("恭喜以下四位中奖:")
# 每行输出10人,格式化输出
for i in range(0, len(winners), 10):
print(" ".join(winners[i:i+10]))
else:
break
用随机函数 random.choice() 方法可以达成。
详情请看我的学习笔记“用 Python 写抽奖程序 ”。
代码运行效果截屏图片
按回车抽奖
#!!sur/bin/nve python
# coding: utf-8
from random import choice # 加载随机抽奖方法。
from random import shuffle # 加载“洗牌”方法。
clear = '\033[2J' # 清屏字符串。
error_tip = f"\n{' 输入错误!':~^45}"
persons = list(range(10))
while True: # 循环输入,输入正确结束循环。
print(f"{clear}\n{'用':>5}“{', '.join(map(str, persons))}”表示待抽奖的十人,设定一个固定中奖人。\n{'':~^50}")
n = input(f"{'设定固定中奖人(0~9):':>14}")
if n.isdigit():
n = int(n) # 固定中奖人。
if not 0 <= n <10:
input(error_tip)
continue
break
else:
input(error_tip)
persons.remove(n) # 剔除固定中奖的8。
#print(persons) #调试用语句。
win = [n] # 中奖列表初值。
k = 3 # 循环抽奖次数。
while k > 0:
input(f"{clear}\n{' 循环抽奖 ':~^46}\n\n{f'剩余抽奖 {k} 次,请按回车抽奖。':^37}\n\n")
temp = choice(persons) # 随机抽奖。
k -= 1 # 抽奖次少1。
persons.remove(temp) # 剔除已抽出的人。
win.append(temp) # 抽中的人加入中奖列表
shuffle(win) # 打乱中奖列表。
winer = f"本次中奖:{'、'.join(map(str, win))}"
print(f"{clear}\n{'':~^50}\n\n{winer:^42}\n\n{'':~^50}\n")
我可以为您提供以下的Python代码,实现一个简单的抽奖程序:
import random
# 参赛者名单,其中固定人员为'Alice'
participants = ['Bob', 'Charlie', 'David', 'Eva', 'Frank', 'Grace', 'Henry', 'Ivy', 'Jack', 'Alice']
# 随机抽取4位获奖者,其中'Alice'必须被排除掉
winners = random.sample(participants.remove('Alice'), 4)
print('恭喜获奖者:{}'.format(winners))
这个程序首先定义了参赛者名单,其中固定的不变人员为'Alice',然后使用Python标准库random中的sample函数,从参赛者名单中随机抽取4个获奖者。注意,由于'Alice'是不可被选取的,因此在运行sample函数之前,必须先将'Alice'从参赛者名单中删除。最后,程序输出获奖者名单。