You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用if与for循环重写含zip()的3*3矩阵评分函数

改写后的代码
import numpy as np

def grade(state):
    for s in ['o','x']:
        if s == 'o':
            # 检查行全为'o'
            if (state == s).all(axis=1).any():
                return -1
            # 检查列全为'o'
            if (state == s).all(axis=0).any():
                return -2
            # 检查主对角线全为'o'
            if (np.diagonal(state) == s).all():
                return -3
            # 检查副对角线全为'o'
            if (np.diagonal(np.rot90(state)) == s).all():
                return -4
        elif s == 'x':
            # 检查行全为'x'
            if (state == s).all(axis=1).any():
                return 1
            # 检查列全为'x'
            if (state == s).all(axis=0).any():
                return 2
            # 检查主对角线全为'x'
            if (np.diagonal(state) == s).all():
                return 3
            # 检查副对角线全为'x'
            if (np.diagonal(np.rot90(state)) == s).all():
                return 4
    return 0

说明

  • 严格遵循指定的代码结构,遍历['o','x']并分分支处理
  • 修复了原代码中误用未定义变量symbol的问题,统一替换为当前遍历的字符s
  • 完全匹配需求的返回规则:
    • 'o'匹配行/列/主对角线/副对角线分别返回-1/-2/-3/-4
    • 'x'匹配行/列/主对角线/副对角线分别返回1/2/3/4
    • 无匹配情况返回0
  • 保留原逻辑的优先级:行匹配优先于列,其次是主对角线,最后是副对角线,一旦匹配到立即返回结果

内容的提问来源于stack exchange,提问作者Phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:40:34