影刀RPA 条件判断if-else的正确写法与嵌套技巧

发布时间:2026/7/19 4:11:23
影刀RPA 条件判断if-else的正确写法与嵌套技巧 影刀RPA 条件判断if-else的正确写法与嵌套技巧作者林焱条件判断是流程控制的基础。几乎每个RPA流程都有条件分支如果登录成功就继续采集、如果数据为空就跳过、如果价格超过阈值就告警。但很多新手写条件判断时逻辑混乱——嵌套太深看不懂、条件写反了、多条件组合搞错了优先级。这篇文章把if-else的正确写法和实战技巧讲全。一、影刀中的条件判断1.1 影刀的【如果】指令影刀提供可视化的条件判断指令【如果】 条件变量 status success 【日志输出】操作成功 【否则如果】 条件变量 status pending 【日志输出】处理中 【否则】 【日志输出】操作失败 【结束如果】1.2 Python中的if-else在Python节点中statusget_variable(status)ifstatussuccess:set_variable(message,操作成功)elifstatuspending:set_variable(message,处理中)else:set_variable(message,操作失败)二、条件表达式的写法2.1 比较运算符# 等于ifab:# 不等于ifa!b:# 大于/小于ifab:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/89ca7cac8e3841d3baa906b47c0ae3c1.png#pic_center)ifab:# 大于等于/小于等于ifab:ifab:坑和的区别是赋值是比较。if a 5:会报错Python中赋值不能作为条件。坑浮点数比较# 浮点数直接比较可能不准确0.10.20.3# False# 用近似比较abs(0.10.2-0.3)0.0001# True2.2 字符串比较拼多多店群自动化上架方案# 精确匹配ifname蓝牙耳机:# 不区分大小写ifname.lower()蓝牙耳机:# 包含if耳机inname:# 不包含if手机notinname:# 以...开头ifname.startswith(蓝牙):# 以...结尾ifname.endswith(Pro):# 正则匹配importreifre.match(r^\d{4}-\d{2}-\d{2}$,date_str):2.3 空值判断# 判断为空ifnottext:# 空字符串、None、空列表都为Trueprint(数据为空)# 判断非空iftext:# 有内容print(有数据)# 判断NoneifvalueisNone:print(值为None)# 判断空字符串不包含Noneiftext:print(空字符串)# 判断空列表ifnotmy_list:print(列表为空)iflen(my_list)0:# 等价但不如not简洁print(列表为空)坑0和空值的判断# 0、空字符串、空列表、None都是Falseif0:# Falseif:# Falseif[]:# FalseifNone:# False# 但0和空是不同概念count0ifcount:# False可能不是你期望的print(有数据)# 如果0也是有效值ifcountisnotNone:# Trueprint(有值)三、多条件组合3.1 AND与# 两个条件都满足ifprice100andstock0:print(在售且价格高)# 多个条件ifprice100andstock0andstatusactive:print(符合条件)3.2 OR或# 任一条件满足ifstatus在售orstatus预售:print(可购买)# 匹配多个值之一ifstatusin[在售,预售,补货中]:print(可购买)3.3 NOT非# 条件不满足ifnot(price1000):print(价格合理)# 等价于![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3c21e75fcb7f4c42b9ca7731ba51654d.png#pic_center)ifprice1000:print(价格合理)3.4 组合条件# AND和OR组合注意括号if(status在售orstatus预售)andprice100:print(便宜且可购买)# 复杂条件if((category电子andprice500)or(category服装andprice200)):print(高价商品)坑运算符优先级and的优先级高于or# 这两个不等价ifaorbandc:# 等价于 if a or (b and c)if(aorb)andc:# 先算a or b再and c永远用括号明确优先级不要依赖默认优先级。四、嵌套条件判断4.1 基本嵌套ifuser_typeVIP:iforder_amount1000:discount0.8else:discount0.9else:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/714ba0d3baff4d748853afe4c6096985.png#pic_center)iforder_amount1000:discount0.95else:discount1.04.2 减少嵌套的技巧技巧一提前返回# 嵌套写法defprocess(data):ifdata:ifidindata:ifdata[id]0:# 处理逻辑pass# 扁平写法提前返回/跳过defprocess(data):ifnotdata:returnifidnotindata:returnifdata[id]0:return# 处理逻辑在影刀流程中可以用跳过本次循环或退出循环来减少嵌套。技巧二用elif替代嵌套# 嵌套写法ifscore90:gradeAelse:ifscore80:gradeBelse:ifscore60:gradeCelse:gradeD# elif写法清晰ifscore90:gradeAelifscore80:gradeBelifscore60:gradeCelse:gradeD技巧三用字典替代多重if# 多重ififstatus0:desc待处理elifstatus1:desc处理中elifstatus2:desc已完成elifstatus3:desc已取消else:desc未知# 字典替代更简洁status_map{0:待处理,1:处理中,2:已完成,3:已取消}descstatus_map.get(status,未知)技巧四用三元表达式简化简单判断# if-elseifprice100:label贵else:label便宜![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7e30e0211466494c86fdf7caa4cde94a.png#pic_center)# 三元表达式一行label贵ifprice100else便宜五、条件判断的常见模式5.1 检查数据有效性dataget_variable(collected_data)# 多重检查ifnotdata:set_variable(error,数据为空)elifnotisinstance(data,list):set_variable(error,数据格式错误)eliflen(data)0:set_variable(error,数据列表为空)else:# 数据有效继续处理set_variable(error,)set_variable(data_count,len(data))5.2 分情况处理sourceget_variable(data_source)ifsourceweb:# 网页采集的数据resultprocess_web_data(data)elifsourceapi:# API返回的数据resultprocess_api_data(data)elifsourceexcel:# Excel读取的数据resultprocess_excel_data(data)else:set_variable(error,f未知数据源{source})resultNone5.3 重试逻辑max_retry3retry_count0successFalsewhileretry_countmax_retryandnotsuccess:retry_count1try:# 执行操作resultdo_something()ifresult:successTrueexceptException:ifretry_countmax_retry:importtime time.sleep(5)# 等5秒重试else:set_variable(error,f重试{max_retry}次后仍失败)5.4 区间判断scoreget_variable(score)ifscore60:level不及格elif60score80:level及格elif80score90:[video(video-Wf9EoZWI-1784397383123)(type-csdn)(url-https://live.csdn.net/v/embed/524993)(image-https://v-![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/93284ea9b0ff436c93d46638976d2181.png#pic_center)blog.csdnimg.cn/asset/a547123d88ad712dccba346c9217e237/cover/Cover0.jpg)(title-TEMU店群如何管理运营)]level良好elif90score100:level优秀else:level无效分数六、在影刀流程中的条件判断实践6.1 影刀条件指令vs Python条件场景推荐原因简单条件1-2个分支影刀【如果】指令可视化直观多条件组合Python节点逻辑表达更清晰多重分支3个以上Python节点elif更清晰需要在分支中执行多个操作影刀【如果】指令可视化更易看复杂业务逻辑Python节点灵活6.2 影刀中的条件表达式写法影刀的【如果】指令中条件表达式使用Python语法条件变量名 运算符 值 示例 status success price 100 耳机 in product_name len(data_list) 0 not error_msg (a 0) and (b 100)6.3 条件判断后设置变量# 在Python节点中做条件判断并设置变量priceget_variable(price)vip_levelget_variable(vip_level)ifvip_levelgold:final_priceprice*0.8elifvip_levelsilver:final_priceprice*0.9else:final_priceprice set_variable(final_price,round(final_price,2))七、避坑清单坑1条件写反# 错误想判断不等于空写成了等于空ifnottext:# 这是判断为空process(text)# 正确iftext:# 判断非空process(text)坑2和混淆# 错误ifstatussuccess:# 赋值不是比较会报错# 正确ifstatussuccess:坑3None判断方式# 推荐ifvalueisNone:ifvalueisnotNone:# 不推荐虽然也能用但不符合Python规范ifvalueNone:坑4is和混淆# is比较内存地址比较值a[1,2,3]b[1,2,3]ab# True值相同aisb# False不是同一个对象![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b1aa09eaee8e4081a5d06f699e8bcb54.png#pic_center)# None比较用isvalueisNone# 正确valueNone# 不推荐坑5嵌套太深# 嵌套4层以上就很难维护了ifa:ifb:ifc:ifd:# 太深了pass# 用提前返回/continue/break扁平化ifnota:return# 或 continueifnotb:returnifnotc:returnifnotd:return# 主逻辑坑6忘记else分支# 如果status不是以上任何值result没有被赋值ifstatusA:result1elifstatusB:result2# result可能未定义![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d7e93d5742f145d082ab7af49629f7db.png#pic_center)# 加else兜底else:result0# 或 raise ValueError(f未知状态{status})