在哪里看快捷键的使用
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 =' ') # 三元条件运算