day06-列表续

列表续

综合运用练习:

CRAPS赌博游戏:
玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;
如果摇出了2点、3点或12点,庄家胜;
其他情况不分胜负,游戏继续。
玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;
如果摇出了7点,庄家胜;
其他情况游戏继续,直到分出胜负。

game_count = 0
player_money = 2000
while player_money > 0:
    print(f"玩家还有{player_money}元")
    money = int(input("请下注:"))
    while money <= 0 or money > player_money:
        money = int(input("请重新下注:"))
    first_point = random.randint(1, 6) + random.randint(1, 6)
    print(f"玩家摇出了{first_point}点")
    if first_point in [7, 11]:
        print("玩家胜利")
        player_money += money
    elif first_point in [2, 3, 12]:
        print("庄家胜利")
        player_money -= money
    else:
        game_over = False
        while not game_over:
            current_point = random.randint(1, 6) + random.randint(1, 6)
            print(f"玩家摇出了{current_point}点")
            if current_point == first_point:
                print("玩家胜利")
                player_money += money
                game_over = True
            elif current_point == 7:
                print("庄家胜利")
                player_money -= money
                game_over = True
    game_count += 1
else:
    print(f"玩家玩了{game_count}次游戏,所剩金额{player_money}终于破产了!")
  • 列表 - 容器数据类型 - 一个变量可以保存多个数据通过循环可以完成对列表中每个元素的操作

  • 列表生成式(推导式) —> 创建列表的一种字面量语法

    问题引入:把一颗色字摇6000次,统计每一面出现的次数

    import random
    fs = [0] * 6
    for _ in range(6000):
    	face = random.randint(1, 6)
    	# 获取列表元素的索引运算
    	fs[face - 1] += 1
    	print(fs)
    for i in range(len(fs)):
    	print(f"{i + 1}点出现了{fs[i]}次")
    
  • 语法

    表名 = [变量名 for 变量名 in range(…, …)]

    a = [x for x in range(1, 101)]
    print(a)    # 输出1~100
    b = [x for x in range(2, 101, 2)]
    print(b)    # 输出1~100的偶数
    c = [x for x in range(1, 101) if x % 3 == 0 or x % 5 == 0]
    print(c)    # 输出1~100中3或5的倍数
    d = [x ** 2 for x in range(1, 11)]
    print(d)    # 输出1~10的平方
    

    练习:双色球:6个红色球 + 1个蓝色球
    红色球:1-33选6个(不重复)球
    蓝色球:1-16个选1个球
    实现一个双色球选号的程序

    import random
    n = int(input("机选几注?"))
    red = [x for x in range(1, 34)]
    blue = [x for x in range(1, 17)]
    red_blue = []
    for _ in range(6):
        index = random.randrange(len(red))
        red_blue.append(red[index])
        red.pop(index)
    red_blue.sort()
    red_blue.append(blue[random.randint(0, 16)])
    print(red_blue)							# 方法一
    
    import random
    n = int(input("机选几注?"))
    for _ in range(n):
        red_blue = []
        while len(red_blue) <= 6:
            red_num = random.randint(1, 33)
            if red_num not in red_blue:
                red_blue.append(random.randint(1, 33))
        # 给列表元素排序(默认升序,从小到达)
        # red_blue.sort(reversed = True) # 降序
        red_blue.sort()
        red_blue.append(random.randint(1, 16))
        for x in red_blue:
            print(f"{x:0>2d}", end=" ")
        print()								# 方法二
    

    补充:random函数

    import random
    # random模块的sample随机抽样函数
    red = [x for x in range(1, 34)]
    red_blue = random.sample(red, 6)
    print(red_blue)
    

练习:有15个男人和15个女人乘船在海上遇险,为了让一部分人活下来,不得不将其中15个人扔到海里,有个人想了个办法让大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到将15个人扔到海里。最后15个女人都幸免于难,15个男人都被扔到了海里。问这些人最开始是怎么站的,哪些位置是男人,哪些位置是女人。

people = [True] * 30
count, index, num = 0, 0, 0
while count < 15:
    if people[index]:
        num += 1
        if num == 9:
            people[index] = False
            count += 1
            num = 0
    index += 1
    index %= 30
for person in people:
    print("女" if person else "男", end="")  # 三元条件运算
print()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值