年会抽奖程序


张三科技有限公司有300名员工,开年会抽奖,奖项如下: 一等奖3名,泰国5日游 二等奖6名,iPhone手机 三等奖30名,避孕套一盒 规则: 共抽3次,第一次抽3等奖,第二次抽二等奖,第三次压轴抽一等奖 每个员工中奖一次,不能重复


import random

#建立员工编号列表
brother = list(range(1,301))    #列表中含1-300共300个数据

#抽奖、删除操作
third = random.sample(brother,30)    #random.sample()函数返回的是一个列表
print(f"恭喜编号为{third}的员工获得三等奖,奖品:避孕套一盒!")
print()
for i in range(30):    #移除已中奖员工的编号
    brother.remove(third[i])

second = random.sample(brother,6)
print(f"恭喜编号为{second}的员工获得二等奖,奖品:iPhone手机一台!")
print()
for i in range(6):
    brother.remove(second[i])

first = random.sample(brother,3)
print(f"恭喜编号为{first}的员工获得一等奖,奖品:泰国5日游!")

京牌摇号小程序


允许用户最多选择3次;每次放出20个车牌供用户选择;京[A-Z]-[xxxxx],可以是数字和字母再组合。


import random
import string

car_nums= []    #暂存车牌号的列表

#生成并存储20个车牌号
for j in range(20):
    n1 = random.choice(string.ascii_uppercase)
    n2 = "".join(random.sample(string.digits + string.ascii_uppercase, 5))
    car_num = f"京{n1}-{n2}"
    car_nums.append(car_num)

#格式化打印20个车牌号
for m in range(4):
    for n in range(5):
        print(f"第{5*m+n+1}个: ",car_nums[5*m+n],"   ",end="")
    print()

#用户选择或重选
chance = 3  #3次选择机会
choose = 0

while chance >=0 :

    #用户选择次数用完,无法再刷新的情况
    if chance ==0:
        choose = int(input("您已用完所有机会,无法刷新。请输入序号选择车牌号:"))
    else:
        choose = int(input(f"请输入序号选择车牌号,输入0刷新选择池。您共有3次机会,还剩{chance}次机会。"))

    #用户刷新成功的情况
    if choose == 0:
        car_nums= [] #清空原来的数组!!!
        # 生成并存储20个车牌号
        for j in range(20):
            n1 = random.choice(string.ascii_uppercase)
            n2 = "".join(random.sample(string.digits + string.ascii_uppercase, 5))
            car_num = f"京{n1}-{n2}"
            car_nums.append(car_num)
        # 格式化打印20个车牌号
        for m in range(4):
            for n in range(5):
                print(f"第{5 * m + n + 1}个: ", car_nums[5 * m + n], "   ", end="")
            print()
        #更新剩余选择次数
        if chance ==0:
            chance =0
        else: chance -= 1

    #用户选择成功的情况
    elif choose>0 and choose<20:
        print(f"恭喜您,您的车牌号为{car_nums[choose-1]}。")
        break

    #输入非法的情况
    else:
        print("输入非法!")

京牌摇号小程序的问题与解决:

问题:每次刷新出来的随机车牌号都是一样的

原因:原来是刷新后没有清空car_nums列表,后续生成的随机车牌号都加在了末尾,所以打印前20个时打印结果永远都是最初的20个。

解决方法:每次刷新操作中,先清空car_nums再存储生成的随机车牌号。