工作中常遇到需要重复执行的任务,比如批量重命名文件、检查系统日志里的异常记录。这时候靠手动一个个操作显然不现实,得让代码自己“转起来”。循环控制就是干这个的,掌握几个典型题目,日常维护效率能提一大截。
为什么循环这么常用
电脑维护中很多任务都有规律可循。比如每天凌晨清理临时文件夹,或者每周扫描一次磁盘错误。这些都可以用循环来自动化处理。写好一段代码,让它按设定次数或条件反复运行,比人工点击省心多了。
最基础的for循环题目
假设你要为10台电脑逐一安装更新补丁,可以用for循环遍历主机列表:
for i in range(1, 11):
print(f"正在连接主机server-{i}.local")
# 这里调用远程命令执行安装
print(f"主机server-{i}更新完成\n")
这段代码会自动输出从1到10的主机名,并模拟安装过程。实际使用时把print换成真正的系统调用就行。
用while处理不确定情况
有些场景没法提前知道要跑多少次。比如监控服务器负载,只要CPU占用超过80%就得持续告警。这种就得用while:
cpu_usage = get_cpu_percent() # 假设这是获取当前CPU使用率的函数
while cpu_usage > 80:
send_alert(f"警告!CPU使用率达{cpu_usage}%")
time.sleep(60) # 等一分钟再查
cpu_usage = get_cpu_percent()
只要条件满足,它就会一直执行下去,适合做守护进程类的任务。
避免死循环的小技巧
写while最容易犯的错就是忘了改条件,导致程序卡死。调试时可以加个计数器保命:
attempt = 0
max_attempts = 5
while not service_healthy() and attempt < max_attempts:
restart_service()
attempt += 1
time.sleep(10)
这样即使服务一直起不来,最多尝试5次也会停下来,不会无限重启拖垮系统。
嵌套循环的实际应用
多层目录下查找特定类型文件是典型场景。外层循环遍历文件夹,内层处理每个文件:
folders = ["/log/app", "/log/db", "/log/web"]
for folder in folders:
files = os.listdir(folder)
for file in files:
if file.endswith(".err"):
print(f"发现错误日志: {folder}/{file}")
这种结构在分析日志、迁移数据时特别实用,层层推进不遗漏。