python从入门到放弃篇14(class类,def自定义函数,random.randint随机数,if条件判断,input用户输入,for循环)实现掷骰子小程序

昨天是一个伤感的一天,但是今天又是一个美好的一天。因为今天已不再是昨天了。今天是崭新的一天。
我们宿舍仍然在打游戏,很吵。不过,我已经习惯了,我会再忍受一年的时间,等大四,我就跟他们say“goodbye”。我时常想着提醒他们,但是我后来仔细想了,一个人愿意做的事,你越阻拦他,只会徒增他的反感而已。所以,我不会阻止,也不能阻止。我发现我们做事大多数是处于一种喜欢,有意思,愿意才会坚持做下去。所以,当你阻止一个人让他不做他喜欢的事是很困难的。要改变一个人的观念也是相同的道理。一个人根深蒂固的观念绝对不会因为你的分析,你的提醒而轻易改变。

当然,人生说完了,我们就应该聊聊我们的工作(程序)了,我这个程序,运用了class类的继承方法,继承是一个对于我们制作多个相同属性的类似对象的好方法,简单来说,就是假设,这里我们有一本书,然后,书都是纸制品,都是存储知识的载体,所以,尽管书是不同的,但是属性都是相同书是一个广义上的大类某种类型的书就是其子类这是具有约束的)。所以,教科书就继承了广义上大类的书的属性即教科书也是纸制品,也是存储知识的载体这是我个人的偏见,如果有朋友有不同看法,可以跟我提出。

今天时间多一些,所以,我会说一下我的程序设计思路。上代码:
我们先创建一个骰子Six_Die对象(类)定义初始化函数def并且设置骰子面数为6,定义函数roll_die输出掷一次骰子的点数,然后,再定义函数****ten_throw,来设置掷十次骰子的结果
在这里插入图片描述
运行结果:
在这里插入图片描述
然而这并不是用户想要的方式,我们应该玩骰子有可能不会只掷骰子十次就结束了,所以,我们需要以用户的角度来考虑问题,我们就要先解决掷骰子的次数问题。即想掷多少次就掷多少次。但是,由于用户可能操作失误输入负数,我们加进一条if语句用于设计简单报错机制。简单的安全意识要有。我们设计程序也要考虑到程序的可维护性。

于是就有了接下来的做法。将之前的roll_die和ten_throw合并
在这里插入图片描述
运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**六面骰子的设计告一段落了,那我们要设计十面骰子呢?我们就想到了继承,因为属性(特征)相同。这里,我们需要了解到超类(Super)**的使用。可将原来定义的初始化函数重新进行定义。于是就有了接下来的做法。
在这里插入图片描述

从图中我们可以看出在pycharm编辑器中行标的旁边有一个向上的箭头,表示继承和函数重写

运行结果,如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然而,如果只是单一的说继承使用,我的偏见,其实已经说完了。但是,我们有没有更加简便的方法可以控制骰子的面数??这样就省去了我们每次都要重新定义的功夫。答案是:“有的,一切皆有可能!!”

我们其实只需要将一开始的sides值变换成可通过用户输入的sides值就可以实现了

就像是这样的:
在这里插入图片描述
但是,注意一点,将sides值变为可输入后后面的函数中范围和输出结果也要相应改变,就像是这样的:
在这里插入图片描述
接下来,我们测试一下效果:
在这里插入图片描述
运行结果:
在这里插入图片描述
在这里插入图片描述
在最后的结果,我们其实就没有必要再调用ten_throw()和roll_die()了我们可以直接简洁明了,就像是这样的:我们已经做好了任意面数,和无限制次数掷的骰子,因此,可以将名字改成Die了,而不是Six_Die(六面骰)
在这里插入图片描述
运行结果,如下图:
在这里插入图片描述
在这里插入图片描述
从最后的运行结果,我们发现了,我们可以用继承来重新做10面骰子,20面骰子,但是都不方便,因为要重写函数,其实我们只需要小小的改变一下sides值,就能实现任何面数的骰子了,并且可以无次数限制的掷我们的思维方式有时候简单点还是比较好的,正所谓:“大道至简!!”

最后,感谢大家前来阅读鄙人的文章,文中或有诸多不妥之处,还望各位人士指出和海涵。

太困了,先睡觉了,搞了一下午的程序,终于写完博文了,等一下晚上还得补昨天的发文任务。
因为昨天没有发文。

猜你喜欢

转载自blog.csdn.net/weixin_43408020/article/details/107205658
今日推荐