2020 Python从入门到不放弃自学笔记5

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))

我不太确定是不是我没有完全理解题目,我作出的结果是无论第一轮输赢如何,只要还有钱都会到第二种模式中无限循环直到金钱输光
作者的做法是第一轮如果有一方胜出则重新开始游戏
另外作者考虑了押注不同金额

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值