*简单的用python实现和电脑玩猜拳
……只是娱乐一下,看看最少能用几行代码写出来)
先上代码,非常短
import random
def judgement(plat): # 判断游戏结果
if plat.count(plat[0]) > 1: # 平局
return 2
return plat.index(max(plat)) if sum(plat) in (1,3) else plat.index(min(plat))
def play():
base = ('剪刀','石头','布')
print('轮到你出了!\n')
for i,n in enumerate(base): # 打印选项
print(f'[{i}] {n}')
player = int(input('输入序号选择:')) # 玩家出
computer = random.randint(0, 2) # 电脑出
print(f'\n- 你出了[{base[player]}]!\n- 电脑出了[{base[computer]}]!')
winner = judgement([player, computer])
print('\n本局是' + ('你赢了!','电脑赢了!','平局~')[winner]) # 结果
play() # 开始玩
玩起来是这样的
轮到你出了!
[0] 剪刀
[1] 石头
[2] 布
输入序号选择:1
- 你出了[剪刀]!
- 电脑出了[石头]!
本局是电脑赢了~
闲得没事干,接下来写点废话
说一下思路:
- 玩家输入数字0, 1, 2来代表是出剪刀、石头还是布
- 电脑用python自带的随机库来随机出一个数字
函数judgement
用于判断输赢:
传进来的参数是一个列表plat
:[玩家出的数字,电脑出的数字]
- 用
count
函数统计列表中是否有出现一样的数字,如果有,那么这局就是平局(比如剪刀对剪刀,石头对石头)。
如果无重复数字,程序接着运行。
- 经过上面的步骤,程序已经排除了平局的情况,所以可以用
sum
函数对列表plat
中的两个数进行求和。
求和结果为1
或3
时,玩家和电脑出的组合有两种:
-
[0, 1], [1, 0]
或[1, 2], [2, 1]
-
也就是
剪刀[0]、石头[1]
或石头[1]、布[2]
的不同顺序组合,两种组合中都是数字大的赢。
所以接下来index
函数配合max
函数找到组合中最大的数字的下标,其对应的就是本场胜者的下标。
- 求和结果为2时只有一种组合:
[0, 2], [2, 0]
也就是剪刀[0], 布[2]
的不同顺序组合,这里是数字小的胜。按照相同的方法找到数字最小者的下标返回即可。