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

如何编写接收二维序列参数、返回获胜队伍序号的函数?

实现who_won函数判断获胜队伍

需求:编写一个接受二维序列参数的函数who_won,返回获胜次数最多的队伍序号;若多个队伍获胜次数相同,返回最先出现的队伍序号。

示例

示例1:

who_won([['W', 'W', 'W'], ['L', 'L', 'L'], ['W', 'W', 'L'], ['L', 'L', 'W']])
# 输出:1

示例2:

who_won([['L', 'W', 'L'], ['W', 'W', 'L'], ['L', 'W', 'W'], ['L', 'W', 'L']])
# 输出:2

现有代码问题

你当前的代码存在几个明显问题:

def who_won(matrix):
w_counter = 0
for x in matrix:
    for y in x:
        if 'W' in x:
            W_counter += 1
  • 变量名大小写不一致:w_counter和W_counter是两个不同变量,运行会触发未定义错误
  • 冗余嵌套循环:内层循环遍历x的每个元素,但逻辑只判断x是否含'W',完全不需要内层循环
  • 逻辑错误:代码仅统计了包含'W'的子列表数量,而非每个队伍实际的获胜次数(每个子列表中'W'的总数才是该队伍的获胜次数)

正确实现方案

def who_won(matrix):
    max_wins = -1
    winner = 0
    # 遍历每个队伍,序号从1开始计数
    for idx, team_results in enumerate(matrix, start=1):
        current_wins = team_results.count('W')
        # 仅当当前获胜次数超过已记录的最大值时,才更新结果
        if current_wins > max_wins:
            max_wins = current_wins
            winner = idx
    return winner

代码说明

  1. 初始化max_wins为-1(确保第一个队伍的获胜次数必然能触发更新),winner存储最终获胜队伍序号
  2. 用enumerate(matrix, start=1)遍历每个队伍的结果,同时获取从1开始的队伍序号
  3. 通过count('W')快速统计当前队伍的获胜次数
  4. 仅当当前次数大于之前的最大值时才更新结果——这保证了次数相同时,保留最先出现的队伍
  5. 遍历结束后返回获胜队伍序号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:01:16