4. 控制流程:条件判断(if/else)、循环(for/while)、循环控制(break/continue)、流程块设计原则
控制流程,说白了就是让程序「自己拿主意」和「反复干活」的能力。没有它,RPA 机器人就只能从上到下一条路走到黑,遇到分支就傻眼,遇到重复就崩溃。我个人习惯把控制流程比作「交通指挥系统」——条件判断是红绿灯,循环是环岛,流程块设计就是整个路网的规划。
4.1 条件判断:if/else 的实战用法
条件判断是 RPA 中最常用的逻辑。说白了就是「如果……就……否则……」。我在项目中遇到过最典型的场景:读取 Excel 中的订单金额,如果大于 1000 元走审批流程,否则自动发货。
基本结构很简单:
if 条件:
执行动作A
else:
执行动作B
但实际项目中,条件往往不止两个。比如判断一个网页元素是否存在:
if 元素存在:
点击该元素
elif 元素不存在但备用元素存在:
点击备用元素
else:
记录日志并发送告警
嗯,这里要注意一个坑:条件的顺序很重要。我曾经把最宽松的条件写在最前面,结果后面的条件永远执行不到。调试了一下午才发现——RPA 是按顺序判断的,一旦匹配就跳出。
4.2 循环:for 和 while 的选择
循环是 RPA 的「体力活」。你想想看,处理 1000 行 Excel 数据、遍历 50 个网页元素、重试 3 次失败操作——这些都得靠循环。
for 循环适合「知道要循环多少次」的场景。比如遍历一个列表:
for 行 in Excel表格的所有行:
处理该行数据
写入结果
while 循环适合「不知道要循环多少次,但知道什么时候停」的场景。比如等待某个网页元素加载:
while 元素未出现:
等待1秒
刷新页面
计数+1
if 计数 > 30:
超时退出
我个人习惯:能用 for 就不用 while。为什么?for 循环天然有边界,不会死循环。while 一旦条件写错,机器人就卡死在那里了。我在项目中见过一个同事的 while 循环,条件永远为真,结果机器人跑了整整一个周末……
| 循环类型 | 适用场景 | 风险点 |
|---|---|---|
| for 循环 | 遍历列表、表格、集合 | 列表为空时直接跳过 |
| while 循环 | 等待条件、重试机制 | 容易死循环,必须加超时 |
4.3 循环控制:break 和 continue 的精髓
这两个关键字,说白了就是「提前下车」和「跳过这一站」。
break:立即终止整个循环。我在处理「找到第一个符合条件的记录就停止」时常用:
for 订单 in 订单列表:
if 订单金额 > 10000:
标记为VIP订单
break # 找到了,后面的不用看了
continue:跳过当前这次循环,继续下一次。比如过滤掉无效数据:
for 行 in 数据表:
if 行数据为空:
continue # 跳过空行
处理该行数据
4.4 流程块设计原则:让代码像乐高一样清晰
控制流程多了,代码就容易变成「意大利面条」。我总结了几条原则,都是血泪换来的:
- 单一出口原则:每个流程块尽量只有一个出口。不要这里 return 一下,那里 break 一下,调试起来想哭。
- 嵌套不超过三层:if 里面套 if,再套 for,再套 while……这种代码我见过,改起来想骂人。超过三层就拆成子流程。
- 条件表达式要可读:别写
if a and not b or c and d这种。拆开写,加注释,对未来的自己好一点。 - 循环一定要有退出机制:while 循环必须配计数器+超时。for 循环要考虑列表为空的情况。
最后说一句:写控制流程时,先画流程图,再写代码。这是我个人的铁律。流程图画清楚了,代码就是翻译工作。流程图都画不清楚,写出来的代码一定是一团浆糊。