python猜拳小游戏,十多行代码搞定,一个很短的写法

*简单的用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中的两个数进行求和。

求和结果为13时,玩家和电脑出的组合有两种:

  • [0, 1], [1, 0][1, 2], [2, 1]

  • 也就是剪刀[0]、石头[1]石头[1]、布[2] 的不同顺序组合,两种组合中都是数字大的赢。

所以接下来index函数配合max函数找到组合中最大的数字的下标,其对应的就是本场胜者的下标。

扫描二维码关注公众号,回复: 11478791 查看本文章
  • 求和结果为2时只有一种组合:
  • [0, 2], [2, 0]

也就是剪刀[0], 布[2] 的不同顺序组合,这里是数字小的胜。按照相同的方法找到数字最小者的下标返回即可。

猜你喜欢

转载自blog.csdn.net/qq_26373925/article/details/104686606