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

Python中随机坐标移动逻辑的嵌套If语句与For循环简化咨询

嵌套If语句简化方案

核心思路

通过坐标-偏移映射表替换多分支判断逻辑,将坐标对应的约束参数和业务逻辑解耦,后续新增坐标仅需补充映射规则,无需修改判断分支,代码可维护性大幅提升。

注:原有代码存在逻辑错误:random_xy_start == perimeter_list[3:7] 无法正确判断坐标是否属于该切片范围,需使用in关键字判断,该问题在优化方案中已自动规避。

实现代码

import random

# 预定义顶部坐标列表
global_top_coords = [
    [5, 190],
    [97, 190],
    [188, 190],
    [279, 190],
    [370, 190],
    [462, 190],
    [553, 190],
    [644, 190],
    [750, 190]
]
perimeter_list = global_top_coords

# 坐标偏移映射表定义:key为坐标转成的元组(列表为可变类型不可做字典key),value为对应可选x偏移、y偏移
coord_offset_map = {}
# 公共y偏移提前定义复用,避免重复声明
COMMON_Y_OFFSET = (75, 100, 125)

# 批量为同规则坐标配置偏移参数
# 索引0、1的顶部左侧坐标规则
for coord in perimeter_list[0:2]:
    coord_offset_map[tuple(coord)] = (
        (75, 100, 125, 150),
        COMMON_Y_OFFSET
    )
# 索引2到6的顶部中间坐标规则
for coord in perimeter_list[2:7]:
    coord_offset_map[tuple(coord)] = (
        (-150, -125, -100, -75, 75, 100, 125, 150),
        COMMON_Y_OFFSET
    )
# 索引7的顶部次右侧坐标规则
coord_offset_map[tuple(perimeter_list[7])] = (
    (-150, -125, -100, -75, 75),
    COMMON_Y_OFFSET
)
# 索引8的顶部最右侧坐标规则
coord_offset_map[tuple(perimeter_list[8])] = (
    (-150, -125, -100, -75),
    COMMON_Y_OFFSET
)

# 业务逻辑实现
random_xy_start = random.choice(perimeter_list)
x_optional, y_optional = coord_offset_map[tuple(random_xy_start)]
xy_rel = (random.choice(x_optional), random.choice(y_optional))

扩展说明

后续新增左侧、右侧、底部等边界坐标时,仅需两步操作即可完成配置:

  • 将新坐标加入perimeter_list
  • 按照坐标所属的规则分组,批量在coord_offset_map中添加对应偏移参数即可,无需新增任何判断分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:30:01