2020 Python从入门到不放弃自学笔记5
今日练习:
CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
书上答案:
"""
Craps赌博游戏
我们设定玩家开始游戏时有1000元的赌注
游戏结束的条件是玩家输光所有的赌注
Version: 0.1
Author: 骆昊
"""
from random import randint
money = 1000
while money > 0:
print('你的总资产为:', money)
needs_go_on = False
while True:
debt = int(input('请下注: '))
if 0 < debt <= money:
break
first = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % first)
if first == 7 or first == 11:
print('玩家胜!')
money += debt
elif first == 2 or first == 3 or first == 12:
print('庄家胜!')
money -= debt
else:
needs_go_on = True
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % current)
if current == 7:
print('庄家胜')
money -= debt
elif current == first:
print('玩家胜')
money += debt
else:
needs_go_on = True
print('你破产了, 游戏结束!')
我的练习:
import random
#导入系统自带生成随机数函数
turn=1
#初始局数为1
money=1000
#初始金钱1000
while turn==1: #第一轮
turn+=1 #轮数加1
x=random.randint(1,6)
y=random.randint(1,6)
#生成两个16随机数
if x+y in(7,11):
money+=100
print('%d+%d=%d turn1 player win:%d'%(x,y,x+y,money))
break
#玩家胜金钱加100
elif x+y in(2,3,12):
money-=100
print('%d+%d=%d turn1 banker win:%d'%(x,y,x+y,money))
break
#庄家胜金钱减100
else:
print('%d+%d=%d turn1 no winner,next turn'%(x,y,x+y))
break
#都不胜金钱不变
z=x+y
while turn>1 and money>0: #开始第二轮并无限循环直到金钱输光
x=random.randint(1,6)
y=random.randint(1,6)
turn+=1
if x+y==z:
money+=100
print('%d+%d=%d turn%d player win:%d'%(x,y,x+y,turn,money))
elif x+y==7:
money-=100
print('%d+%d=%d turn%d banker win:%d'%(x,y,x+y,turn,money))
else:
print('turn%d no winner,next turn'%(turn))
我不太确定是不是我没有完全理解题目,我作出的结果是无论第一轮输赢如何,只要还有钱都会到第二种模式中无限循环直到金钱输光
作者的做法是第一轮如果有一方胜出则重新开始游戏
另外作者考虑了押注不同金额