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

如何用Python简化大量if/elif语句?以QUIDO板控制代码为例

优化QUIDO板输出控制代码的方案

你的代码存在大量重复逻辑,完全可以通过抽象变量和简化分支判断来大幅精简,同时提升可维护性。

简化后的核心代码

import requests

def setOutput(output, action):
    # 校验输入范围,避免无效请求
    if not 1 <= output <= 16:
        print(f"无效输出编号:{output},仅支持1-16")
        return
    if action not in (0, 1):
        print(f"无效操作指令:{action},仅支持0或1")
        return
    
    # 映射操作类型:1对应's'(设置),0对应'r'(重置)
    action_type = 's' if action == 1 else 'r'
    # 动态拼接请求URL
    url = f'http://192.168.1.254/set.xml?type={action_type}&id={output}'
    
    try:
        r = requests.get(url)
        r.raise_for_status()  # 捕获HTTP请求错误
        print(r.url)
    except requests.exceptions.RequestException as e:
        print(f"请求失败:{str(e)}")

def myTimer(seconds):
    import time
    time.sleep(seconds)

while True:
    setOutput(1, 1)
    myTimer(1)
    setOutput(1, 0)
    myTimer(1)

关键优化点

  • 消除重复分支:不再为每个输出写单独的if判断,通过字符串格式化动态生成请求URL,把变化的id和type参数作为变量代入
  • 输入合法性校验:提前过滤无效的输出编号和操作指令,避免发送无意义的HTTP请求
  • 异常处理:捕获网络请求可能出现的错误(如设备离线、网络中断),提升代码健壮性
  • 逻辑集中:后续修改URL格式、扩展输出范围时,只需修改一处代码即可

进阶优化建议

  1. 抽离常量:把固定的基础URL定义为常量,方便后续修改设备地址:
BASE_QUIDO_URL = 'http://192.168.1.254/set.xml'
# 生成URL时改为:
url = f"{BASE_QUIDO_URL}?type={action_type}&id={output}"
  1. 批量操作支持:如果需要同时控制多个输出,可新增批量处理函数:
def setMultipleOutputs(output_list, action):
    for output in output_list:
        setOutput(output, action)

# 使用示例:同时打开输出1、3、5
setMultipleOutputs([1,3,5], 1)
  1. 操作映射字典:如果后续操作类型扩展(比如新增暂停、切换等),用字典映射比三元表达式更易扩展:
ACTION_MAP = {
    1: 's',
    0: 'r',
    # 可新增其他操作类型
    # 2: 'p'
}
action_type = ACTION_MAP.get(action)
if not action_type:
    print(f"无效操作指令:{action}")
    return

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:09:24