大家好,欢迎来到Python实战专题。
没想到大家对于实战类的热情很高,已经有好几个小伙伴催更了。所以马不停蹄地写了这篇,我们继续来带大家用Python做一些简单的项目,带领大家实际练习,最终熟练掌握这门语言。
今天的课题非常简单,我们一样来写一个小游戏,这个小游戏大家都会玩,就是著名的剪刀石头布的游戏。
这个游戏的英文叫做rock paper and scissors,规则也不用我说了,大家想必都非常熟悉。最终运行的结果是这样的:
也就是说我们输入r表示石头,p表示布,s表示剪刀。电脑会随机出一个,然后根据我们和电脑的选项判定输赢,输出最终的结果。
剪刀石头布和上次的猜数游戏差别不大,都是很简单的游戏,代码层面的难点并不多。关于输入输出以及if-else这些基础的语法上一期已经讲过了, 这里我们就不多赘述了。主要挑一些大家不太熟悉可能不太了解的内容聊聊。
首先是随机数,Python原生就有随机数的功能,不过并不是一个系统函数,而是需要引入random包。
Python当中的引包非常简单,使用import加上包的名字或者路径即可。比如我们要引入的随机数包叫做random,我们直接import进来即可。
import random
random这个包当中的方法很多,可以说是应有尽有,基本上我们日常关于随机的需求都能实现。既可以随机一个整数,也可以随机一个小数,还可以随机采样,也可以随机乱序。
在今天的问题当中,我们需要的是随机采样,也就是从石头、剪刀和布当中随机抽取一个。我们使用random.choice这个方法来实现,一行即可。
computer = random.choice(['r', 'p', 's'])
说到随机数就必须要提到随机数种子,我们在之前讲解随机数原理的文章当中曾经详细介绍过。现在的随机数其实都是伪随机数,是根据某种算法算出来的,其实是围绕随机数种子遵守某一个分布的,并不是真正意义上的随机。如果大家不停地运行,会发现输出的结果是有规律的。为了解决这个问题,我们常规的方法是用当前的时间作为随机数种子,这样就可以尽量消除输出结果的规律性。
import time
random.seed(time.time())
由于我们需要用到时间相关的函数,所以需要在一开始import time这个包。
在今天的内容当中,我们将会用到函数。
Python中的函数非常非常简单,它几乎没有限制,我们可以用函数来实现一切我们想要做的事情。限制少的好处是学起来容易,不需要记住各种各样的条件,但是缺点是非常灵活,易学难精,很多高级用法学不会或者说接触不到。这里呢我们只需要用到最简单的函数的写法,大概是下面这个样子。
def func(input1, input2):
pass
def表示我们创建的是一个函数,后面跟上函数名,然后在函数名后面是括号括起来的参数。这里我们也不用管什么必选参数和默认参数了,统统当成是必选参数,然后我们在函数体下面实现我们想要的功能。
Python是非常灵活的,我们可以在函数当中返回任何东西,也可以什么都不返回,甚至可以不同的条件返回的结果个数和类别都不同。
最后介绍一下Python当中的三元表达式,三元表达式是一个可选项,也就是说你可以一辈子不用三元表达式,这并不会带来任何影响。因为三元表达式的本质就是if-else的语句,只是三元表达式相比较来说更加简易,写代码的时候使用会比较顺手。
Python中的三元表达式相比于C++我个人感觉更好理解一些,虽然写起来稍微复杂了一点点,但是对新手来说还是比较友好的。比如我们要根据某一个条件判断一个变量的值是0还是1,我们可以写成这样:
param = 1 if xxx else 0
三元表达式也可以嵌套,比如两个if else嵌套在一起,但是这样会导致代码的可读性很差,不建议这么干。