checkio练习题:010-x-o-referee

井字游戏,有时也被称为“进攻和防守”,是一个两人玩家(X和O)轮流标志着3×3的网格的空间的连珠游戏。
最先在任意一条直线(水平线,垂直线或对角线)上成功连接三个标记的一方获胜。

但我们不去玩这个游戏。你将是这个游戏的裁判。你被赋予游戏的结果,以及你必须判断游戏是平局还是有人胜出,以及谁将会成为最后的赢家。
如果X玩家获胜,返回“X”。如果O玩家获胜,返回“O”。如果比赛是平局,返回“D”。

游戏的结果是作为字符串形式的列表,其中“X”和“O”是玩家的标志,“.”是空格。

输入: 游戏结果作为字符串形式的列表(Unicode)。

输出: “X”,“O”或“D”作为字符串形式。

范例:

checkio([
    "X.O",
    "XX.",
    "XOO"]) == "X"

checkio([
    "OO.",
    "XOX",
    "XOX"]) == "O"

checkio([
    "OOX",
    "XXO",
    "OXX"]) == "D"

如何使用: 此任务中的概念将有助于您遍历数据类型。这还可以用在游戏的算法上,让你知道如何去检查结果。

前提:
要么有一个赢家,要么平局
len(game_result) == 3
all(len(row) == 3 for row in game_result)

 

from typing import List


def checkio(game_result):
    sample = ''.join(game_result)
    all_possibilities = (game_result +
                         [sample[i::3] for i in range(3)] +
                         [sample[0::4]] +
                         [sample[2:7:2]])
    print(all_possibilities)
    if 'XXX' in all_possibilities:
        return 'X'
    elif 'OOO' in all_possibilities:
        return 'O'
    else:
        return 'D'

if __name__ == '__main__':
    print("Example:")
    print(checkio(["X.O",
                   "XX.",
                   "XOO"]))

    # These "asserts" using only for self-checking and not necessary for auto-testing
    assert checkio([
        "X.O",
        "XX.",
        "XOO"]) == "X", "Xs wins"
    assert checkio([
        "OO.",
        "XOX",
        "XOX"]) == "O", "Os wins"
    assert checkio([
        "OOX",
        "XXO",
        "OXX"]) == "D", "Draw"
    assert checkio([
        "O.X",
        "XX.",
        "XOO"]) == "X", "Xs wins again"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值