目录
练习题
用python代码做一个猜拳游戏,先思考思考,之后在进行详细的分析。
---------------------------------------------------------------------------------------------------------------------------------
随机数
由于练习题中可能需要用到这个知识点,故在这里先简单介绍一下。
如何在python中实现随机取数呢?
第一步:导入 random 模块
import 模块名
这里的模块名就是 random
第二步:使用 random 模块中的功能
random.randint(开始,结束) # 模块名.函数名(开始数字,结束数字)
这里包含开始的数字和结束的数字, randint 是实现随机整数功能的函数。
---------------------------------------------------------------------------------------------------------------------------------
分析
我们要在电脑上做一个猜拳游戏,可能开始不知道怎么分析,那我们不妨想想现实中猜拳游戏是怎样的:
第一:要有玩家,最简单的情况就是两个人;
第二:玩家要出拳,显示出出拳的情况;
第三:进行输赢的判断;
之后我们在把上述三点情况一一对应到程序中,
对于第一点,天然存在人类和电脑这两个玩家。
对于第二点,现实中的出拳是直观可见的,而在程序中怎么去表示出拳?——我们可以用 input 函数来实现人类的出拳(这是依据人的主观能动性来实现的,具有随机性),电脑的出拳我们可以用随机数来表示。那怎么表示出拳的情况呢?——由于电脑的别名又叫计算机,那我们是不是可以用数字来代表出拳的情况呢,用 0 来表示“剪刀”,1来表示“石头”,2来表示“布”。
对于第三点,如何在电脑上进行输赢的判断呢?我们想想判断在程序中代表着什么,是不是条件语句。条件语句需要有条件,我们先固定在人类获胜的情况下,什么情况下人类会获胜?是不是下面这个表格:
人类 | 电脑 |
剪刀-0 | 布-2 |
石头-1 | 剪刀-0 |
布-2 | 石头-1 |
根据上面这个表格我们是不是可以想到 if 语句的条件判断代码就是判断二者的出拳情况是否与上述表格相同。其他情况类似。
分析完毕,接下来进行代码的实现。
---------------------------------------------------------------------------------------------------------------------------------
代码
import random # 导入随机模块
a = int(input('请输入您要出的拳:0-剪刀;1-石头;2-布')) # 玩家出拳
b = random.randint(0,2) # 电脑出拳
if ((a == 0) and (b == 2)) or ((a == 1) and (b == 0)) or ((a == 2) and (b == 1)):
print('人类获胜,电脑失败')
elif a == b:
print('平局')
else:
print('人类失败,电脑获胜')
运行结果如下:
通过上述例子也给我们一个启发:在书写条件语句时,如果条件判断的复杂程度不同,我们可以将最复杂的条件判断放到 else 中去,也就是先把简单的条件判断写了。
拓展:如果猜拳游戏比赛一回之后,双方不服想着再来一次,那这个代码该怎么写呢?
注:进行多次比赛可以使用后面要学的循环语句,这里就仍用 if 语句来完成这个要求。
代码:
import random # 导入随机模块
a = int(input('请输入您要出的拳:0-剪刀;1-石头;2-布')) # 玩家出拳
b = random.randint(0,2) # 电脑出拳
if ((a == 0) and (b == 2)) or ((a == 1) and (b == 0)) or ((a == 2) and (b == 1)):
print('人类获胜,电脑失败,电脑不服要求再来一次')
p = int(input('再次请输入您要出的拳:0-剪刀;1-石头;2-布'))
c = random.randint(0, 2)
if ((p == 0) and (c == 2)) or ((p == 1) and (c == 0)) or ((p == 2) and (c == 1)):
print('人类全胜,电脑必须服')
elif p == c:
print('平局')
else:
print('人类失败,电脑获胜')
elif a == b:
print('平局,双方都不服,再来一次')
p = int(input('再次请输入您要出的拳:0-剪刀;1-石头;2-布'))
c = random.randint(0, 2)
if ((p == 0) and (c == 2)) or ((p == 1) and (c == 0)) or ((p == 2) and (c == 1)):
print('一平一胜,电脑必须服')
elif p == c:
print('平局')
else:
print('人类失败,电脑获胜')
else:
print('人类失败,电脑获胜,人类不服再来一次')
p = int(input('再次请输入您要出的拳:0-剪刀;1-石头;2-布'))
c = random.randint(0, 2)
if ((p == 0) and (c == 2)) or ((p == 1) and (c == 0)) or ((p == 2) and (c == 1)):
print('人类半胜,电脑必须服')
elif p == c:
print('平局')
else:
print('人类失败,电脑获胜')
感兴趣的可以自己去试一下,这里就不放结果了。