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

Python用for循环实现座位校验函数check_seating_arrangement报错求解

代码问题分析与修复方案

原代码核心问题

  • 主函数check_seating_arrangement逻辑错误:
    1. 条件arrangement in must_list[i]无意义:arrangement是完整座位列表,must_list[i]是两个姓名的元组,该条件永远为假,辅助函数从未被正确调用
    2. 判断if check_must==True错误:check_must是函数对象,未执行调用,该条件永远为假,最终直接返回False
  • 辅助函数check_must逻辑完全倒置:应该检查指定的两个人是否在座位中相邻,而非遍历所有人员判断邻居是否在要求列表中

修复后代码

def check_two_adjacent(arrangement, a, b):
    # 辅助函数:判断a和b是否在环形座位中相邻
    n = len(arrangement)
    idx_a = arrangement.index(a)
    # 用取模运算统一处理首尾相邻的边界情况,无需单独判断首尾索引
    left_neighbor_idx = (idx_a - 1) % n
    right_neighbor_idx = (idx_a + 1) % n
    return arrangement[left_neighbor_idx] == b or arrangement[right_neighbor_idx] == b

def check_seating_arrangement(arrangement, must_list):
    # 遍历所有必须相邻的组合,只要有一个不满足就直接返回False
    for p1, p2 in must_list:
        if not check_two_adjacent(arrangement, p1, p2):
            return False
    # 所有要求都满足返回True
    return True

测试验证

运行你给出的测试用例:

print(check_seating_arrangement(['Serena', 'Timothy', 'Lucy', 'Harry', 'Gina', 'Alex'], [('Serena', 'Alex'), ('Harry', 'Lucy')]))

输出结果为True,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:15:02