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函数找到组合中最大的数字的下标,其对应的就是本场胜者的下标。

  • 求和结果为2时只有一种组合:
  • [0, 2], [2, 0]

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值