第3章 Python基础速通:变量与数据类型、条件判断、循环、函数定义、文件读写

各位同学,欢迎来到Python基础速通。说实话,很多风电工程师一听到「编程」两个字就头大。我当年也一样,觉得搞风机控制、搞SCADA数据采集才是正事。但后来我发现,不会Python,你连分析个振动数据都得求人。所以这一章,咱们把最核心的底子打牢。

本章核心目标:用最短的时间,掌握Python最常用的5个基础模块。学完你就能写一个简单的风电数据读取脚本。

3.1 变量与数据类型:给数据贴个标签

变量是什么?说白了就是给数据起个名字。你想想看,风机转速是1500转,你总不能每次都写「1500」吧?把它存到变量里,用起来就方便多了。

# 这是我做风电项目时最常用的几个变量类型
wind_speed = 12.5        # 风速,浮点数
rotor_speed = 1500       # 转速,整数
is_running = True        # 运行状态,布尔值
turbine_name = "WTG-01"  # 风机编号,字符串

我个人习惯,变量名一定要见名知意。别写什么 abc,三个月后你自己都看不懂。

避坑指南:我曾经在项目里用 list 做变量名,结果把Python内置的列表函数给覆盖了。排查了半天才发现。记住:别用Python关键字和内置函数名做变量。

Python的数据类型主要有这么几种:

类型 示例 说明
int 1500 整数,比如转速
float 12.5 浮点数,比如风速
str "WTG-01" 字符串,比如设备编号
bool True/False 布尔值,比如是否运行
list [1, 2, 3] 列表,比如一组风速数据
dict {"name": "WTG-01"} 字典,比如设备参数

3.2 条件判断:让代码学会做决定

风机什么时候该偏航?什么时候该变桨?这些判断逻辑,在代码里就是条件判断。说白了就是:如果……就……否则……

wind_speed = 25  # 当前风速

if wind_speed > 25:
    print("切出!风机停机保护")
elif wind_speed > 12:
    print("满发状态,正常发电")
else:
    print("低风速,待机中")

嗯,这里要注意:Python用缩进来表示代码块,别用Tab和空格混着用。我见过太多新人因为这个报错,一脸懵。

重要提醒:条件判断里,== 是判断相等,= 是赋值。写错一个,程序逻辑全乱。我曾经在调试偏航控制逻辑时,就因为这个bug,风机在原地转了一整圈。

3.3 循环:让重复的工作自动化

做风电数据分析,经常要处理成千上万条数据。手动处理?不存在的。循环就是干这个的。

Python有两种循环:forwhile。我个人90%的场景用 for,因为它更直观。

# 遍历风速列表
wind_speeds = [12.5, 15.3, 8.7, 20.1, 5.6]

for speed in wind_speeds:
    if speed > 25:
        print(f"风速{speed}m/s,需要切出!")
    else:
        print(f"风速{speed}m/s,正常运行")

你想想看,如果不用循环,这5条数据你得写5遍。要是5000条呢?

我的经验:处理风电SCADA数据时,经常用 for 循环配合 enumerate(),既能拿到数据,又能拿到序号。比如:for i, speed in enumerate(wind_speeds):

3.4 函数定义:把逻辑装进盒子里

函数是什么?就是把一段逻辑封装起来,给它起个名字,想用的时候直接调用。说白了就是「一次定义,多次使用」。

def calculate_power(wind_speed, rotor_diameter):
    """
    计算风机理论发电功率
    :param wind_speed: 风速 (m/s)
    :param rotor_diameter: 风轮直径 (m)
    :return: 功率 (kW)
    """
    import math
    area = math.pi * (rotor_diameter / 2) ** 2
    power = 0.5 * 1.225 * area * (wind_speed ** 3) * 0.4  # 0.4为风能利用系数
    return power / 1000  # 转换为kW

# 调用函数
power = calculate_power(12.5, 100)
print(f"理论发电功率:{power:.2f} kW")

我建议每个函数只做一件事。别搞那种几百行的「万能函数」,调试起来能让你怀疑人生。

核心要点:函数定义用 def 关键字,参数可以设默认值,返回值用 return。写注释是个好习惯,尤其是给函数写docstring(就是函数名下面那个三引号注释)。

3.5 文件读写:和硬盘打交道

做风电系统,数据都在文件里。CSV文件、TXT文件、JSON文件……不会读写文件,等于白学。

# 读取风速数据文件
with open("wind_data.txt", "r", encoding="utf-8") as f:
    data = f.readlines()

# 处理数据
wind_speeds = []
for line in data:
    line = line.strip()  # 去掉换行符
    if line:  # 跳过空行
        wind_speeds.append(float(line))

print(f"共读取{len(wind_speeds)}条风速数据")
print(f"平均风速:{sum(wind_speeds)/len(wind_speeds):.2f} m/s")

# 写入结果
with open("result.txt", "w", encoding="utf-8") as f:
    f.write(f"平均风速:{sum(wind_speeds)/len(wind_speeds):.2f} m/s\n")

这里有个关键点:with 语句。它会在文件用完后自动关闭,省得你忘了写 f.close()。我早期写代码就经常忘,导致文件句柄泄漏,程序跑着跑着就崩了。

避坑指南:文件路径别写死。我曾经把路径写成 C:\Users\我的电脑\data.txt,结果换台电脑就报错。用相对路径或者 os.path 模块来处理路径,才是正道。

知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作一个速查地图。

Python基础速通知识体系 Python基础 变量与数据类型 条件判断 循环 函数定义 文件读写 风电数据存储 控制逻辑判断 批量数据处理 功能模块封装 日志/配置读写 五大基础模块 + 风电应用场景 = 快速上手Python

好了,这一章的内容就这些。变量、条件、循环、函数、文件读写——这五个东西,你练熟了,风电数据分析的基本功就算打牢了。别贪多,把每个例子自己敲一遍,比看十遍都管用。


专注资料整理