在此先安利一波大佬的Python学习项目地址:https://github.com/jackfrued/Python-100-Days

这些天一直在看着大佬的项目学习Python,这是第五天循环学习完的练习,感觉很有意思,就照着意思写了一下,期间也改进了很多不满意的地方,个人认为这个例子真的很,

可以根据运行中产生的很多问题一步步去解决,达到自己理想的效果

Craps赌博游戏:
玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
玩家再次要色子 如果摇出7点 庄家胜
如果摇出第一次摇的点数 玩家胜
否则游戏继续 玩家继续摇色子
玩家进入游戏时有1000元的赌注 全部输光游戏结束

这是那位大佬的版本:

 1 from random import randint
2
3 money = 1000
4 while money > 0:
5 print('你的总资产为:', money)
6 needs_go_on = False
7 while True:
8 debt = int(input('请下注: '))
9 if debt > 0 and debt <= money:
10 break
11 first = randint(1, 6) + randint(1, 6)
12 print('玩家摇出了%d点' % first)
13 if first == 7 or first == 11:
14 print('玩家胜!')
15 money += debt
16 elif first == 2 or first == 3 or first == 12:
17 print('庄家胜!')
18 money -= debt
19 else:
20 needs_go_on = True
21
22 while needs_go_on:
23 current = randint(1, 6) + randint(1, 6)
24 print('玩家摇出了%d点' % current)
25 if current == 7:
26 print('庄家胜')
27 money -= debt
28 needs_go_on = False
29 elif current == first:
30 print('玩家胜')
31 money += debt
32 needs_go_on = False
33
34 print('你破产了, 游戏结束!')

大佬的版本我觉得只有一个不友好的地方就是当输入为空时,会出现一个ValueError的异常,这样我认为不太友好,所以改版了一下,下面是我的版本

 1 from random import randint
2 money=1000
3 while money>0:
4 touzhu=0
5 try:
6 touzhu = int(input('你投注的金额是:'))
7 except ValueError:
8 print('输入为空',end=', ')
9 #touzhu=int(input())
10 finally:
11 flag=False
12 if touzhu <= 0:
13 print('投注无效,请重新投注')
14 elif touzhu > money:
15 print('投注超过了你的资产总和,请重新投注')
16 else:
17 shuzi=randint(1,6)+randint(1,6)
18 #print('本次摇出的点数为:%d'%shuzi)
19 cun=shuzi
20 if shuzi==7 or shuzi==11:
21 print('恭喜,你赢了!')
22 money+=touzhu
23 elif shuzi==2 or shuzi==3 or shuzi==12:
24 print('不好意思,你输了!')
25 #zhuangjia+=touzhu
26 money-=touzhu
27 else:
28 flag=True
29 zongtouzhu = 0
30 while flag:
31 jiazhu=-1
32 try:
33 jiazhu=int(input('你的加注金额是:'))
34 except ValueError:
35 print('输入为空',end=', ')
36 finally:
37 zongtouzhu+=jiazhu
38 flag=False
39 if zongtouzhu+touzhu > money:
40 print('加注超过了你的资产总和,请重新加注')
41 zongtouzhu-=jiazhu
42 flag=True
43 elif jiazhu < 0:
44 #可以不加注,则加注为0
45 print('加注无效,请重新加注')
46 flag=True
47 zongtouzhu-=jiazhu
48 else:
49 shuzi=randint(1,6)+randint(1,6)
50 #print('本次摇出的点数为:%d'%(shuzi))
51 if shuzi==7:
52 print('不好意思,你输了!')
53 money-=(touzhu+zongtouzhu)
54 #zhuangjia+=touzhu
55 elif shuzi==cun:
56 print('恭喜,你赢了!')
57 money+=(touzhu+zongtouzhu)
58 else:
59 flag=True
60 #print(money)
61 print('你已经破产,游戏结束!')

本来按照游戏原本的思路去写的,写着写着就想要不第二次以后摇色子来个加注吧,这样更刺激嘛,哈哈哈哈,另这个版本当输入为空时,提示为无效,可以重新投注,游戏继续,

不会出现红色异常的,其他就没什么改进了,想加个界面做成一个完整的摇色子游戏,可是这块还不会,继续加油了

还请路过的大佬指点不足啊

Python学习之Craps赌博游戏篇的更多相关文章

  1. 【craps赌博游戏】

    /* cpaps赌博游戏 说明: 一个简单的赌博游戏,游戏规则如下:玩家掷两个骰子,点数为1到6,如果第一次点数和为7或11,则玩家胜,如果点数和为2.3 或12,则玩家输,如果和 为其它点数,则记录 ...

  2. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  3. Python学习之not,and,or篇

    Python学习之not,and,or篇 运算符示意 not –表示取反运算. and –表示取与运算. or –表示取或运算. 运算符优先级 not > and > or. 举例如下: ...

  4. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  5. python应用-craps赌博游戏

    from random import randint face1=randint(1,6) face2=randint(1,6) first_point=face1+face2 print('玩家摇出 ...

  6. python学习之掷骰子游戏

    """ 通过学习的python知识,写一个简单的python小游戏 游戏名字:掷骰子比大小 游戏规则: 1.玩家可以选择玩掷几个骰子游戏(默认3个) 2.玩家可以设置双方 ...

  7. python 学习笔记十三 JQuery(进阶篇)

    jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...

  8. python学习:猜数字游戏

    猜数字游戏   系统生成一个100以内的随机整数, 玩家有6次机会进行猜猜看,每次猜测都有反馈(猜大了,猜小了,猜对了-结束) 6次中,猜对了,玩家赢了. 否则系统赢了   #!/usr/bin/en ...

  9. Python学习笔记【第六篇】:迭代器、生成器、高阶函数、装饰器

    迭代器 迭代器是访问集合元素的一种方式,迭代器从对象的第一个元素开始访问,知道所有元素被访问完成.迭代器只能往前访问,不能通过索引访问. 类型内部使用__iter__()方法转为迭代器,使用__nex ...

随机推荐

  1. ASP.NET MVC4中对JS和CSS的引用

    https://www.cnblogs.com/madyina/p/3702314.html ASP.NET MVC4中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: < ...

  2. New Skateboard

    Max wants to buy a new skateboard. He has calculated the amount of money that is needed to buy a new ...

  3. 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)

    我没有实现时间复杂度为O(n)的算法. 思路:从第一数开始,onelist[0]:onelist[0]+onelist[1]:这样依次推算出每个子数组的sum值.和max进行比较.最后得到max值. ...

  4. 显示目录文件命令 - ls

    1) 命令名称:ls 2) 英文原意:list 3) 命令所在路径:/bin/ls 4) 执行权限:所有用户 5) 功能描述:显示目录文件 6) 语法: ls 选项[-ald][文件或目录] -a 显 ...

  5. http请求常见错误状态码

    一.HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. 原因:(调用方接口方法的实参和服务器接口方法的形参不一致) 1.前端提交数据 ...

  6. SpringBoot整合WEB开发--(三)文件上传

    文件上传: Java中文件上传一共涉及到两个组件,CommonsMultipartResolver和StandardServletMultipartResolver,其中CommonsMultipar ...

  7. util之ArrayList

    Java之ArrayList 方法: add(o: E): void 在list的末尾添加一个元素o add(index: int, o: E): void 在指定的index处插入元素o clear ...

  8. vga显示原理即相关计算

    行扫描周期:完成一行扫描所需时间: 行时序时间(a,b,c,d,e):完成一个像素点显示得时间 场扫描周期:完成所有行(一帧扫描所需时间) 场时序时间(o,p,q,r,s):完成一行显示得时间,一个完 ...

  9. Java-POJ1006-Biorhythms(中国剩余定理)

    https://blog.csdn.net/shanshanpt/article/details/8724769 有中文题面,就不解释了. 妥妥的中国剩余定理没跑了. Java跑得慢,一点办法也没有, ...

  10. b 解题报告

    本题已收录至2019/9/15 本周总结 题目 [问题描述] Hja有一棵\(n\)个点的树,树上每个点有点权,每条边有颜色.一条路径的权值是这条路径上所有点的点权和,一条合法的路径需要满足该路径上任 ...