[理性讨论]初学python,模拟的骑勇大战什么水平

虎扑用户313456
楼主 (虎扑)
小弟最近初学python,闲来无事,写了一串代码来模拟骑勇大战。 代码如下。先解释一下模拟的思路。骑士勇士,分别轮着进攻,勇士骑士勇士骑士勇士这样,直到比赛结束。勇士进攻的时候,按出手占比来决定谁出手,就是产生一个随机数,库里出手占比为29%,那么随机数在1-29之间就库里出手,然后调用shoot方法,出手可以是三分也可以是两分,根据三分占比来决定,库里的三分占比为51%,也产生一个随机数,随机数在1-51就出手三分,否则出手两分。出手之后可以命中也可以打铁,这个根据三分命中率或两分命中率来决定,也是产生一个随机数,跟上面一样。比赛时间为2880秒,一次勇士进攻和一次骑士进攻共耗时24秒。勇士阵容为:库里+汤普森+杜兰特+格林+鲁尼;骑士阵容为:詹姆斯+欧文+乐福+jr史密斯+tt。 运行结果如下(仅截取了比赛开始和比赛结束部分),尚未统计双方比分,因为这里我遇到了一个问题还没解决,就是不知道比分该如何统计,有懂的老哥烦请指导一下我手动统计了一回,比分大概在勇士140--120骑士这个样子。 所以各位jr觉得咋样,有没有啥值得改进的,我刚学完面向对象这里,还有很多不会,各位jr畅所欲言,无论是代码改进方面还是模拟思路改进方面都可以

 

🔥 最新回帖

莱昂纳德不吃饼
384 楼
整挺好,我昨天把你这个模型更完善了一下,😂😂,加了篮板,防守,个人得分,总分,获胜球队!

I
Ingian
383 楼
既然面向对象,我觉得可以在你的基础上定义一个basketball类,然后时间线推动的时候focus在球怎么运动就好了

虎扑用户007547
382 楼
🐴

A
Aesen
381 楼
引用 @老哥稳如脱缰野马 发表的:
吃我一帽

高达我日

虎扑用户684674
380 楼
你的运行结果可以用R的sum函数来做,Python应该也有和函数

 

🛋️ 沙发板凳

马房山上石楠花开
老哥,你真的是初学的吗?🤣🤣🤣

虎扑用户313456
引用 @马房山上石楠花开 发表的:
老哥,你真的是初学的吗?🤣🤣🤣

是啊

我抱着邓紫棋说到
卧槽66666

虎扑用户831237
厉害了

虎扑用户476786
厉害

J
Jiraiya的蝌蚪
扣篮和两分用一个命中率就离谱,库里扣篮都有47%成功率🐴? [ 此帖被Jiraiya的蝌蚪在2020-02-14 20:17修改 ]

虎扑用户313456
引用 @Jiraiya的蝌蚪 发表的:
扣篮和两分用一个命中率就离谱,库里扣篮都有47%成功率🐴?

扣篮和两分是一个命中率啊,三个数字分别是三分出手占比,三分命中率,两分命中率
德保库
打印字符串的水平

虎扑用户036120
你还不如直接打字

明天再打球
引用 @Jiraiya的蝌蚪 发表的:
扣篮和两分用一个命中率就离谱,库里扣篮都有47%成功率🐴?

扣篮是0🐶

哈登获得MVP后说
看这代码想起来之前游戏设计的节课作业 脑子都要炸了

G
Gmdct
我初学 只会print (hello world)

酸果冻
不停的打印字符串的水平

P
Paul火连天
牛逼啊

虎扑用户313456
引用 @德保库 发表的:
打印字符串的水平

刚开始学,写的确实比较简单,有啥具体的建议嘛,哪里可以改进一下
虎扑用户855602
兄弟可以加一点防守,抢断,盖帽,随机时间还有快24秒,压哨如何处理球,或者最后追分之类的一定出手三分球之类的。

爵士后卫多诺万米切尔
可以啊

虎扑用户313456
引用 @杀不死的比老大 发表的:
兄弟可以加一点防守,抢断,盖帽,随机时间还有快24秒,压哨如何处理球,或者最后追分之类的一定出手三分球之类的。

这个太难了,我还没到这个水平
S
SKG1
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

虎扑用户384001
挺有意思的

虎扑用户313456
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

我是土木的,快毕业了没啥事做,学着玩的
克拉伯和高尔
挺好玩的,建议每次出手后带上比分

南京路虎揽胜
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

Cpp或者Java

噬雷111
引用 @马房山上石楠花开 发表的:
老哥,你真的是初学的吗?🤣🤣🤣

这其实不复杂,但楼主这种学习思维很好

_
_TracyMcGrady
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

攻c语言出来难找工作,java或者c++好找。

虎扑用户855602
引用 @我很强我知道 发表的:
这个太难了,我还没到这个水平

都是概率,也还行吧,可以一点点改

虎扑用户768704
完全看不懂的水平

恋才隐
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

c不太吃香

七弦の竖琴
比分比如两分球进了,设置一个s += 2就行了吧,再格式化输出

虎扑用户313456
引用 @噬雷111 发表的:
这其实不复杂,但楼主这种学习思维很好

谢谢夸奖哈哈哈
b
boomingnan
这是自学??

虎扑用户784697
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

c++好点 ,c现在用的太少了

铁头金刚小飞侠
那个很多ifelse的地方换成一张表,记录球员及其被选中的概率,方便扩展或者配置。
其他没啥问题。

赵鹿翎
很初级,但比我强的水平

大闸蟹不能吃
第二行,第一个单词
没一定的的水平的,写不出来的。
霖00
整地好活

赵鹿翎
我tt就只能dunk吗!

虎扑用户313456
引用 @七弦の竖琴 发表的:
比分比如两分球进了,设置一个s += 2就行了吧,再格式化输出

这个s += 2是写在shoot方法里还是写在函数里啊,每次循环怎么把得分加在一起呢
R
RecursiveCock
你好骚啊,统计分数设两个球队的变量呗,进了就sum

虎扑用户984533
可以啊 建议把比分加上 再加上罚球🐶

绝地求生区区长
这个框也太惨了🐶

虎扑用户397067
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

java是世界上最好的语言

虎扑用户313456
引用 @铁头金刚小飞侠 发表的:
那个很多ifelse的地方换成一张表,记录球员及其被选中的概率,方便扩展或者配置。
其他没啥问题。

谢谢啊,我试试
凯里不拉杆要死欧文
引用 @Jiraiya的蝌蚪 发表的:
扣篮和两分用一个命中率就离谱,库里扣篮都有47%成功率🐴?

看不起谁呢?

虎扑用户313456
引用 @boomingnan 发表的:
这是自学??

是啊,学了十来天,另外你这头像是我曾经用过的情头哈哈哈
奥托立夫
引用 @我很强我知道 发表的:
刚开始学,写的确实比较简单,有啥具体的建议嘛,哪里可以改进一下

不要求你加入中场拉拉队环节,但你好歹统计个比分啊

M
Mikasa1108
lz牛逼啊

萌萌兔杨嘻嘻
引用 @我很强我知道 发表的:
刚开始学,写的确实比较简单,有啥具体的建议嘛,哪里可以改进一下

球员这个类里边能扩充的东西太多了,突破扣篮抢断助攻盖帽,还有投篮突破扣篮,每个对象实现的方法不一样,这些都可以具体去扩充

碰巧路过的理智汤蜜
我也初学。
按我想法如果你的程序逻辑是:出手比例*两分/三分比*命中率比的话,你可以在每个勇士球员的循环里把随机数乘三个概率之后的结果加给未知数x,把骑士每个循环得分加给未知数y,然后print(“x-y”)这样可以显示每回合比分吧,就和虎扑一样。

佐木小次郎
vb才是最好的语言

虎扑JR0002232845
引用 @杀不死的比老大 发表的:
都是概率,也还行吧,可以一点点改

这个涉及的内容很复杂,楼主这里只简单的考虑球员随机出手和随机得分,还好实现,你这个要加进去特别多的设计逻辑和代码,光是设计逻辑就够难了,

虎扑用户607483
整挺好的,或许可以加一些球权转换,谁拿篮板,谁过掉谁啥的,明星球员也可以加专属姿势,老哥挺有创意的,支持你😁

虎扑用户384001
楼主 我没用过python 可能说的有不周到之处 不过下面是我的想法
你可以在player类里面中shoot和dunk方法 return个int变量 如果得分成功return 2或者3 得分失败则return0 然后在main方法里定义两个变量分别代表两队得分 然后每次调用shoot或者dunk时相加即可

虎扑用户313456
引用 @萌萌兔杨嘻嘻 发表的:
球员这个类里边能扩充的东西太多了,突破扣篮抢断助攻盖帽,还有投篮突破扣篮,每个对象实现的方法不一样,这些都可以具体去扩充

刚开始没考虑这么多,就只分了shoot和dunk,慢慢加吧
隔扣乔丹就完了
就有点牛批

晃倒过乔丹
棒!

虎扑用户313456
引用 @灌湯BAO 发表的:
我也初学。
按我想法如果你的程序逻辑是:出手比例*两分/三分比*命中率比的话,你可以在每个勇士球员的循环里把随机数乘三个概率之后的结果加给未知数x,把骑士每个循环得分加给未知数y,然后print(“x-y”)这样可以显示每回合比分吧,就和虎扑一样。

我试试看啊,那这样比分是期望啊
铁头金刚小飞侠
还有么那个随机数生成,每次都要写个1,100,虽说一看就知道啥意思,但本质跟magic number也没区别,应该搞一个函数把它封起来到处调用。
另外那么多player不应该每个搞一个变量,而是要搞个players数组。
然后python么一般main函数外面加个if __name__ == “__main__”的判断,使得其他python文件在复用你这部分代码时不会触发main函数。
先挑这么多刺吧

虎扑用户313456
引用 @懒癌少年丶 发表的:
楼主 我没用过python 可能说的有不周到之处 不过下面是我的想法
你可以在player类里面中shoot和dunk方法 return个int变量 如果得分成功return 2或者3 得分失败则return0 然后在main方法里定义两个变量分别代表两队得分 然后每次调用shoot或者dunk时相加即可

哦对对对,把这个忘了,谢谢老哥
深海鱼龙
引用 @马房山上石楠花开 发表的:
老哥,你真的是初学的吗?🤣🤣🤣

有可能是有其它语言基础,如果是第一次接触编程语言那只能说是天赋

虎扑用户313456
引用 @深海鱼龙 发表的:
有可能是有其它语言基础,如果是第一次接触编程语言那只能说是天赋

大一的时候学过c语音,不过三四年忘得差不多了
虎扑用户629238
老哥在哪学的python啊?我也想学,无奈无从下手

萌萌兔杨嘻嘻
引用 @我很强我知道 发表的:
刚开始没考虑这么多,就只分了shoot和dunk,慢慢加吧

给你个小建议,球员属性可以统一放到一个数据库里,这样修改和增加球员属性非常方便

哈哈what
兄弟自学能力不错。。

留级这件小事儿
学习方法很好。

我以前学语言是边做游戏开发边学的。

枯燥的内容很容易让人放弃,需要点趣味性和成就感支撑的。

特雷西xjbd麦迪
我也是学生,不太行,感觉用java好写一些。这个是不是统计一下两边步长,按回合分别循环叠加?

虎扑用户313456
引用 @萌萌兔杨嘻嘻 发表的:
给你个小建议,球员属性可以统一放到一个数据库里,这样修改和增加球员属性非常方便

恩恩对,谢谢老哥
特雷西xjbd麦迪
引用 @虎扑JR0002232845 发表的:
这个涉及的内容很复杂,楼主这里只简单的考虑球员随机出手和随机得分,还好实现,你这个要加进去特别多的设计逻辑和代码,光是设计逻辑就够难了,

搬运容易,设计算法真的难。

虎扑用户313456
引用 @铁头金刚小飞侠 发表的:
还有么那个随机数生成,每次都要写个1,100,虽说一看就知道啥意思,但本质跟magic number也没区别,应该搞一个函数把它封起来到处调用。
另外那么多player不应该每个搞一个变量,而是要搞个players数组。
然后python么一般main函数外面加个if __name__ == “__main__”的判断,使得其他python文件在复用你这部分代码时不会触发main函数。
先挑这么多刺吧

好,谢谢老哥!
D
DestinY定
引用 @奥托立夫 发表的:
不要求你加入中场拉拉队环节,但你好歹统计个比分啊

哈哈哈啦啦队可还行

虎扑用户715888
引用 @我很强我知道 发表的:
哦对对对,把这个忘了,谢谢老哥

还有篮板 加一个投篮失败 根据他的前场篮板率 可以抢篮板

末日使者费德提克
引用 @凯里不拉杆要死欧文 发表的:
看不起谁呢?

我差点都以为要从下面过去了

适可而止吧笨蛋
可以加更多东西,

虎扑用户313456
引用 @特雷西xjbd麦迪 发表的:
我也是学生,不太行,感觉用java好写一些。这个是不是统计一下两边步长,按回合分别循环叠加?

诶对,感觉你说的也可以,我试试
铁头金刚小飞侠
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

正经大学一般就教一门语言,但学语言的目的是为了学数据结构和算法(不然不好上机考试是吧),不是限制你的发展方向的,那是培训班才做的事情。
你要是计算机专业的话应该做好学多门语言的觉悟,合格的程序员很少是只会一门语言的。

英俊丁帅哥
引用 @末日使者费德提克 发表的:
我差点都以为要从下面过去了

2k人物模型没法穿hhh

虎扑用户936658
有想法实现出来就很好!

东契奇的大哥
代码能力不说,这玩意看起来虽然很简单,但这逻辑这思维比较牛逼了

虎扑用户176652
引用 @我很强我知道 发表的:
是啊

我最近也初学,根本背不下来各种要求啊,感觉写代码好难。

J
Joe45886
让我想起了范特西篮球经理

J
Java是世界上最好的语言
引用 @英俊丁帅哥 发表的:
2k人物模型没法穿hhh

我switch玩2k经常穿过人的身体扣篮。。。

泰戈布隆堂
我也不懂python,我大学学过c语言,我想你弄个值a,如果2分进就+1,再弄个b,3分进就+1,最后总分就是2a+3b,我不会编程,纯属乱说,见谅

特拉季奇
这个xy是根据什么确定的?
爱看打架的鲨鱼辣椒
掉路上没?

爱看打架的鲨鱼辣椒
在车里没

克里斯保罗教你叫爷爷
挺有意思的,这创意真是不错

湖人队史第一人勒布朗詹姆斯
引用 @马房山上石楠花开 发表的:
老哥,你真的是初学的吗?🤣🤣🤣

这个很基础

大熊猫zzz
引用 @凯里不拉杆要死欧文 发表的:
看不起谁呢?

身残志坚小库里,隔扣魔王大姚明?

致橡树n
楼主我请问一下你的python是看视频的嘛,可以推荐一下视频吗,我最近也在自学python

大熊猫zzz
引用 @凯里不拉杆要死欧文 发表的:
看不起谁呢?

身残志坚小库里,隔扣魔王大姚明?

铁头金刚小飞侠
引用 @SKG1 发表的:
不知道老哥是不是计算机专业。我们学校感觉啥都学,啥都只学一点就换别的了。我要不要专门只攻一个方向?攻C语言如何?

如果要说主攻方向的话建议选java,这是目前工作岗位最多的。
c/c++可以帮助你更好了解内存的管理,有空了也得学学。
python可以说是大多数程序员都得会的,主攻其它语言的同时用python写些小工具提升工作效率是常规操作。

英俊丁帅哥
引用 @Java是世界上最好的语言 发表的:
我switch玩2k经常穿过人的身体扣篮。。。

我switch2k20卡带还没到货

大宝212121
引用 @我很强我知道 发表的:
大一的时候学过c语音,不过三四年忘得差不多了

那你这不叫初学啊

英俊丁帅哥
引用 @Java是世界上最好的语言 发表的:
我switch玩2k经常穿过人的身体扣篮。。。

那真的难受

G
Graham丶Z
引用 @明天再打球 发表的:
扣篮是0🐶

老2k玩家了

J
Juven他爹
多年前学c++的时候做过模拟圣斗士之间pk的

虎扑用户998764
可以