3、Python基础速通(下):条件判断、循环与函数

好,咱们接着聊。上一节我们把Python的数据类型和运算符过了一遍,算是把"食材"备齐了。这一节,咱们要学的是"烹饪技巧"——怎么让代码根据不同的情况做不同的事,怎么重复做同一件事,以及怎么把一段逻辑打包成"工具"随时调用。

说实话,这三个东西是写RPA脚本的命根子。你想想看,一个自动化流程里,90%的逻辑都离不开判断和循环。我刚开始写RPA脚本的时候,就是因为没搞懂循环的边界条件,结果让脚本把同一个文件处理了100遍……嗯,那天的日志文件看得我头皮发麻。

3.1 条件判断:让代码学会"看人下菜碟"

条件判断,说白了就是让程序在岔路口做选择。Python里最常用的就是ifelifelse三兄弟。

基本写法很简单:

score = 85

if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

这里有个细节我特别想强调——缩进。Python用缩进来表示代码块,不像其他语言用花括号。我见过太多新手因为缩进不对,程序跑出来的结果完全不是自己想要的。我个人习惯用4个空格,千万别混用Tab和空格,否则你会疯的。

⚠️ 避坑指南: 我曾经在项目里因为一个if后面忘了加冒号,排查了整整20分钟。记住:ifelifelse后面一定要跟冒号!

再来看一个RPA场景里的实际用法。比如你要判断一个文件是否存在,再决定要不要处理它:

import os

file_path = "data/report.xlsx"

if os.path.exists(file_path):
    print("文件找到了,开始处理")
    # 这里可以写处理文件的代码
else:
    print("文件不存在,跳过本次任务")

为什么会这样设计?因为RPA脚本经常要处理不确定的情况。文件可能被删了、网络可能断了、数据可能格式不对——没有条件判断,脚本一遇到异常就直接崩了。

3.2 循环:让重复劳动交给机器

循环是RPA的灵魂。你想啊,人工处理100个文件,累得要死;用循环,几行代码搞定。

3.2.1 for循环:遍历一切

for循环在Python里用得最多。它可以遍历列表、字符串、字典、文件行……几乎任何可迭代的东西。

# 遍历列表
files = ["a.txt", "b.txt", "c.txt"]
for file in files:
    print(f"正在处理:{file}")

# 遍历数字范围
for i in range(5):
    print(f"第{i+1}次循环")

这里range()函数要重点说一下。它生成一个整数序列,range(5)生成0到4,range(1, 5)生成1到4,range(1, 10, 2)生成1,3,5,7,9。我在项目中经常用range()来控制循环次数,比如每隔5秒检查一次文件是否生成。

3.2.2 while循环:条件满足就一直干

while循环适合那种"不知道要循环多少次,但知道什么时候停"的场景。

count = 0
while count < 5:
    print(f"当前计数:{count}")
    count += 1  # 别忘了这一行,否则死循环
⚠️ 致命陷阱:while循环最容易犯的错误就是——忘记更新循环条件,导致死循环。我曾经在凌晨3点调试一个RPA脚本,就是因为少写了一句count += 1,脚本跑了一整夜没停。第二天看到CPU占用100%,整个人都傻了。

3.2.3 break和continue:循环里的"刹车"和"跳过"

这两个关键字很实用。break是直接跳出整个循环,continue是跳过当前这一次,继续下一次。

for i in range(10):
    if i == 3:
        continue  # 跳过3
    if i == 7:
        break     # 到7就停
    print(i)
# 输出:0,1,2,4,5,6

3.3 函数定义:把逻辑打包成"工具"

函数是什么?说白了就是把一段代码起个名字,以后想用就调用这个名字。我习惯把函数想象成一个"黑盒子"——你给它输入,它给你输出,中间怎么实现的你不用管。

定义函数用def关键字:

def greet(name):
    """这个函数用来打招呼"""
    return f"你好,{name}!"

# 调用函数
message = greet("小明")
print(message)  # 输出:你好,小明!

函数的好处有三个:

  • 复用:写一次,用N次
  • 可读:函数名本身就是注释
  • 易维护:改一个地方,所有调用都生效
💡 我的习惯: 每个函数只做一件事。如果一个函数超过20行,我就考虑拆分成更小的函数。这样调试的时候,你能很快定位问题出在哪个环节。

3.4 实战:用循环批量处理文件

好了,理论讲完了,咱们来点真格的。假设你有一个文件夹,里面有100个CSV文件,你需要把每个文件的第一行(表头)提取出来,合并到一个新文件里。这就是典型的RPA场景。

import os

def extract_headers(folder_path, output_file):
    """
    批量提取CSV文件的第一行(表头)
    :param folder_path: 文件夹路径
    :param output_file: 输出文件路径
    """
    # 获取文件夹下所有CSV文件
    csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
    
    # 打开输出文件
    with open(output_file, 'w', encoding='utf-8') as out:
        # 循环处理每个文件
        for file_name in csv_files:
            file_path = os.path.join(folder_path, file_name)
            try:
                with open(file_path, 'r', encoding='utf-8') as f:
                    first_line = f.readline().strip()
                    out.write(f"{file_name}: {first_line}\n")
                    print(f"已处理:{file_name}")
            except Exception as e:
                print(f"处理{file_name}时出错:{e}")

# 调用函数
extract_headers("./data", "headers_summary.txt")

这段代码里,我把三个知识点全用上了:

  • 函数:把整个逻辑封装成extract_headers
  • for循环:遍历所有CSV文件
  • 条件判断:用if f.endswith('.csv')筛选文件

你想想看,如果人工做这件事,100个文件一个个打开、复制、粘贴,至少得半小时。用这个脚本,几秒钟搞定。这就是RPA的价值。

🎯 核心要点:
  • 条件判断让程序有"决策能力"
  • for循环适合遍历已知集合,while循环适合条件驱动
  • 函数是代码复用的基础,每个函数只做一件事
  • 循环+条件判断+函数 = RPA脚本的基本单元

下一节,咱们要聊Python的"瑞士军刀"——字符串和文件操作。到时候你会看到,怎么用几行代码搞定Excel、Word、PDF的自动化处理。嗯,那才是RPA真正发力的地方。