day2_python年会抽奖游戏

一、for循环

1.1 语法

for i in range(10): 
  print(i)

range(10),其实是相当于产⽣了⼀个从0到9的列表,每循环⼀次,就会把列表⾥的下⼀个元素取出来给临时变量i。
在这里插入图片描述

print( list(range(10)) ) # 可以验证range(10) 就是产⽣了⼀个列表

在这里插入图片描述

1.2 循环猜年龄:最多允许猜三次,猜对了就退出程序

goad_age=29

for i in range(3):
    guess_age=int(input("请输入你猜的年龄:"))
    if guess_age > goad_age:
        print("猜的太⼤了,往⼩⾥试试...")
    elif guess_age < goad_age:
        print("猜的太小了,往大⾥试试...")
    else:
        exit("猜对了...")

exit("次数用完,挑战失败") # 退出程序

在这里插入图片描述
在这里插入图片描述

1.3 列表打印50-100奇偶数

temp=[]
for i in range(50,101):
    if i%2 == 1:
        temp.append(i)
    else:
        temp=temp
print(temp)

在这里插入图片描述

1.3 循环嵌套

⼀栋楼有5层,每层8间屋⼦,要求你把本楼所有的房间号打印⼀遍, 格式“1层-104”, “2层-205“

for i in range(1,6):
    for j in range(1,9):
        print(f"{i}层-{i}0{j}")

在这里插入图片描述

二、break&continue

像上边循环嵌套⼩节那个打印楼层的⼩程序,需求改了, 遇到第3层时,不打印任何房间号,其它层都打印。这个怎么实现呢?
continue
continue的语法作⽤是, 只要程序⼀遇到continue, 本次循环就不继续了,直接进⼊下⼀次循环

for i in range(1,6):
    for j in range(1,9):
       if i == 3:
           continue # 跳过本次循环,继续下次循环
       print(f"{i}层-{i}0{j}室")

break
break的语法作⽤是,只要程序遇到break, 就会结束当前这个循环, 注意如果是多层嵌套循环,只结束当前这⼀层的循环。

第三层不输出,404后不输出

for i in range(1, 6):
   for j in range(1, 9):
      if i == 3:
          print("不⾛3层.......")
          continue # 跳过本次循环,继续下次循环
      if i == 4 and j == 4: # 遇到404
          print("遇到⻤屋404了,不再继续了")
          break # 结束当前循环, 注意只会结束第2层这个⼩循环。
      print(f"{i}层-{i}0{j}室")

在这里插入图片描述
第三层不输出,404改成40x

for i in range(1, 6):
   for j in range(1, 9):
      if i == 3:
          print("不⾛3层.......")
          continue # 跳过本次循环,继续下次循环
      if i == 4 and j == 4: # 遇到404
          print(f"{i}层-{i}0X室")
      print(f"{i}层-{i}0{j}室")

在这里插入图片描述

三、打印星星

for i in range(1,10):
    if i < 6:
        print("*"*i)
    else:
        print("*"*(10-i))

在这里插入图片描述

三、while循环

与for必须指定循环多少次不⼀样的是, while 循环的次数可以是不定的,只要条件满⾜就可以永远循环下去

while 条件: # 只要条件为真, 就会不断的循环
   print(xxxxx)

循环10次:

count = 0
while count < 10:
     print("第{count}次循环....")
     count += 1

3.1 ⽤while 实现循环猜年龄

允许⽤户猜3次,若还不对,告诉他,你真笨,还想继续猜么? 如果⽤户选择y, 就让他继续,如果选择n, 就退出。

count = 0
black_gf_age = 25
while True:
    count += 1
    if count <= 3:
        guess = int(input("猜猜⿊姑娘多⼤了>>:"))
        if guess > black_gf_age:
            print("猜的太⼤了,往⼩⾥试试...")
        elif guess < black_gf_age:
            print("猜的太⼩了,往⼤⾥试试...")
        else:
            exit("恭喜你,猜对了...") # 退出程序
    else:
        choice = input("猜了3次还不对,真是笨呀,还玩么? [y/Y or n/N]").strip()
        # strip删除字符串左右两侧的空格或特殊字符,特殊字符:制表符(\t)、回车符(\r)、换行符(\n)等
        if len(choice) == 0 :
            continue # 不能写空值
        if choice in ("y","Y"):
            count = 0
        elif choice in ("n","N"):
            exit("bye.")
        else:
            print("请输⼊正确的选项...")

3.2 打印乘法表

默认:end=“\n”

# 九九乘法表
for i in range(1, 10):
    for j in range(1, i+1):  # j=[1,i]
        print(f'{j}x{i}={i*j}\t',end='')  # 或者使用这个:print(f'{j}x{i}={i*j}',end=' ')  end后引号内加一个空格
        # \t是相当于四个空格
        # end=” "的意思是为末尾end传递一个空字符串,表示这个语句没结束。
    print()  # 小循环不换行,大循环换行

在这里插入图片描述

四、京牌摇号小程序

需求:

  1. 允许⽤户最多选3次
  2. 每次放出20个⻋牌供⽤户选择
  3. 京[A-Z]-[xxxxx], 可以是数字和大写字⺟在组合

4.1 random模块:可以产⽣指定范围内的随机数、字符串等

random.choice(seq)函数:从非空序列中随机选取一个数据并返回,该序列可以是list、tuple、str、set。
random.sample的用法,多用于截取列表(字符串)的指定长度的随机数,但是不会改变本身的排序;
random.randint(参数1, 参数2),函数返回参数1和参数2之间的任意整数,且1和2必须是整数。

>>> import random # 导⼊random模块
>>>random.choice("abcdefghi") # 参数也可以是⼀个列表
'd'
>>> s = "abcdefghijklmn"
>>> random.sample(s,3) # 从数据源s中随机取出3个值
['b', 'a', 'k']
>>> random.randint(1,100) # 打印⼀个随机数
79

4.2 string模块

>>> import string # 导⼊string模块
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # ⼤写字⺟
>>> string.ascii_lowercase # ⼩写字⺟
'abcdefghijklmnopqrstuvwxyz'
>>> string.punctuation # 打印特殊字符
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.digits # 打印数字
'0123456789'

4.3 join:

在这里插入图片描述

代码实现:

import random
import string

upper_case_letters = string.ascii_uppercase  # 大写字母A-z
number = string.digits  # 0-9
com_num_letter = upper_case_letters+number  #A-Z0-9

count = 3
while count>0:
    count-=1
    num_list = []
    for i in range(20):
        first_English = random.choice(upper_case_letters)  # 大写字母选一个作为第一个区域号
        # last_five_digits1 = random.sample(com_num_letter,5)  # 形式['','','',]
        last_five_digits = "".join(random.sample(com_num_letter,5))
        car_num = f"京{first_English}-{last_five_digits}"
        num_list.append(car_num)
    print(num_list)
    choice_num = input("请输入你选择的车牌号“京[A-Z]-[xxxxx]”:").strip()
    if choice_num in num_list:
       exit(f"恭喜你选对了,你的车牌为{choice_num}")
    else:
       print(f"未选中,您还有{count}次机会。")

在这里插入图片描述

五、年会抽奖程序

在这里插入图片描述
解题思路:

  1. ⽣成⼀个员⼯列表,⽤random模块从⾥⾯取随机值
  2. 取完值之后,⽴刻从员⼯⼤列表⾥把中奖⼈删掉,即可防⽌其再次中奖
import random
import string

# 抽奖规则
Lottery_rules = f'''
------------- 抽奖规则 --------------
          ⼀等奖 3名, 泰国5⽇游
          ⼆等奖6名,Iphone⼿机
          三等奖30名,避孕套⼀盒
------------- 开始抽奖 --------------
'''
print(Lottery_rules)

# 生成300个数字代表300名员工
Employee_No = list(range(1, 301))

count = 0
num = [3,6,30]
while count < 3:
    count+=1
    leveol_prizes = 4-count
    num_prizes = num[leveol_prizes-1]
    tis = input(f"第{count}轮抽奖:{leveol_prizes}等奖{num_prizes}名")
    Winning_list = random.sample(Employee_No,num_prizes)
    print(f"中奖名单为:{Winning_list}")
    # 去除中奖
    for i in Winning_list:
        Employee_No.remove(i)

在这里插入图片描述

六、faker模块

import faker
list=[]
alex = faker.Faker(locale="zh_CN")  # en_US
print(alex)

for i in range(1,10):
    list.append(alex.name())
print(list)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值