DAY 2 循环、随机数练习 - 年会抽奖程序&京牌摇号小程序

年会抽奖程序

张三科技有限公司有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再存储生成的随机车牌号。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值