2021.1.26-date6 练习

在哪里看快捷键的使用

randint的应用需要引进random函数

打印的数字前面用0占位

1.快捷键

# print(random.randint(1,6))   # 产生[1,6]的随机数
# alt+shift+上下箭头可以移动代码位置
# ctrl + D 复制代码
# ctrl + y删除代码
软硬件中存在缺点和缺陷---> bug --->debug  (点每行的红点再点甲壳虫就可以逐步执行)
shift + f1  在线查函数的使用

2.Craps game

'''
玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;
如果摇出了2点、3点或12点,庄家胜;
其他情况不分胜负,游戏继续。
玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;
如果摇出了7点,庄家胜;
其他情况游戏继续,直到分出胜负。
'''
import random
first_point = random.randint(1,6) + random.randint(1,6)
if first_point in [7, 11]:
    print('玩家胜')
elif first_point in [2, 3, 12]:
    print('庄家胜')
else:
    game_over = False
    while not game_over:
        new_point = random.randint(1, 6) + random.randint(1, 6)
        if new_point == first_point:
            print('玩家胜')
            game_over = True
        elif new_point == 7:
             print('庄家胜')
             game_over = True
             
玩家下注:
money = 1000
while money > 0:
    print(f'玩家总资产:{money}元')   # !!!!!注意该写法(变量的格式化)
    debt = int(input("请下注:"))
    while debt <= 0 or debt > money:
        debt = int(input("请重新下注:"))
    first_point = random.randint(1,6)+ random.randint(1,6)
    print(f"玩家摇出了{first_point}点")   # !!!!!!!注意该写法
    if first_point in [7,11]:
        print('玩家胜')
        money += debt
    elif first_point in [2,3,12]:
        print('庄家胜')
        money -= debt

    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('玩家胜')
                 money += debt
                 game_over = True
             elif current_point == 7:
                 print('庄家胜')
                 money -= debt
                 game_over = True
print('玩家破产')

3.练习

1)把一颗骰子摇6000次,输出每一面出现的次数

import random
fs = [0]*6 # !!!!!重复运算(列表里面的数重复六次) #[0,0,0,0,0,0]
for _ in range(6000):
    face = random.randint(1, 6)
    fs[face-1] += 1
for i in range(1, 7):
    print(f"{i}出现了{fs[i - 1]}次")

补充:# 列表生成式(推导式)—>创建列表的一种字面量语法 # !!!!!!

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

2)

双色球:6个红色球 + 1个蓝色球
红色球:1-33选6个(不重复)球
蓝色球:1-16选1个球
实现一个双色球随机选号的程序
'''
select_ball = []     
while len(select_ball) <6: 
    red_ball = random.randint(1, 33)
    if red_ball not in select_ball:
        select_ball.append(red_ball)
'''
写法2:red_balls = [x for x in range(1,34)]
      select_ball = random.sample(red_balls, 6)
      # sample函数实现无放回随机抽样
      
select_ball.sort()
blue = random.randint(1,16)
select_ball.append(blue)
print(select_ball)    
select_ball = [f'{x:0>2d}' for x in select_ball]                print(select_ball)
  # 0>2d表示不够两位数的左边补0,<表示右边补0
Josephu环问题
有15个男人和15个女人乘船在海上遇险,为了让一部分人活下来,
不得不将其中15个人扔到海里,有个人想了个办法让大家围成一个圈,
由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,
报到9的人继续扔到海里面,直到将15个人扔到海里。
最后15个女人都幸免于难,15个男人都被扔到了海里。
问这些人最开始是怎么站的,哪些位置是男人,哪些位置是女人。
persons = [True] * 30
index, counter, num = 0, 0, 0
while counter < 15:
    if persons[index]:
        num += 1
        if num == 9:
            persons[index] = False
            counter +=1
            num = 0
    index += 1
    index %= 30   # 确保index的值保持在0-29之间
for x in persons:
    print('女'if x else '男', end =' ')     # 三元条件运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值