通过Python的for和while语句来理解循环
要在电脑上通过命令提示符或 PowerShell 运行 Python,需要先下载并安装 Python。
如果你还没有安装,请参考Python安装与开发环境配置一文来完成安装。
各位Web开发者,大家好!在网站制作或日常业务中,您是否曾感觉“总是在重复同样的工作”?能将这种繁琐工作自动化的,就是编程中的“循环处理(循环)”。
本文为Python循环处理的基础——for语句和while语句准备了大量即使是初学者也能立即上手的“可运行代码”。目的是让您首先体验“代码跑起来”的感觉,理论知识后续自然会跟上。请务必复制代码并粘贴运行,亲身感受循环带来的便利!
1. for语句:擅长重复固定次数!
for语句擅长从列表、字符串等多个元素集合的数据中,按顺序逐个取出元素进行处理。此外,它也用于预先确定好次数的处理,例如“重复10次”。
最基本的形式是 for 变量 in 数据集合:。让我们马上来看看具体的代码吧。
按顺序取出列表中的元素
例如,假设您有一个正在管理的网站分类列表。让我们来逐个显示这些分类的名称。
# 创建要显示的分类名称列表
categories = ["HTML", "CSS", "JavaScript", "Python", "网页设计"]
# 使用for语句从列表中逐个取出元素并显示在屏幕上
for category in categories:
print(f"分类名: {category}")
# 执行结果:
# 分类名: HTML
# 分类名: CSS
# 分类名: JavaScript
# 分类名: Python
# 分类名: 网页设计
重复固定次数(range函数)
如果只是想单纯地重复固定次数的处理,比如“想创建5个博客文章样本”,使用range()函数会非常方便。写作range(5),它会按顺序生成从0到4的数字(关键点是它不包含5!)。
# 从0到4,总共循环5次
for i in range(5):
# 使用f-string来显示这是第几次循环(i从0开始,所以要+1)
print(f"这是第{i + 1}次处理。")
# 执行结果:
# 这是第1次处理。
# 这是第2次处理。
# 这是第3次处理。
# 这是第4次处理。
# 这是第5次处理。
在知晓元素序号的同时进行重复(enumerate函数)
在取出列表元素时,有时我们还想同时获得“当前是第几个元素”的信息。这时就可以使用enumerate()函数。在想以排行榜形式显示时非常有用。
# 热门文章排行榜列表
ranking = ["Python入门", "用CSS创建响应式设计", "JavaScript的异步处理"]
# 使用enumerate同时取出排名(索引)和文章标题(元素)
# 通过设置 start=1,可以让排名从1开始
for rank, title in enumerate(ranking, start=1):
print(f"第{rank}名: {title}")
# 执行结果:
# 第1名: Python入门
# 第2名: 用CSS创建响应式设计
# 第3名: JavaScript的异步处理
2. while语句:在满足特定条件期间重复
while语句是一种“只要此条件为真(True),就继续处理”的循环类型。与for语句不同,它常用于重复次数不固定的情况。例如,在“持续处理直到用户输入特定字符”之类的交互式程序,或“持续处理直到处理时间超过10秒”等情况下大显身手。
其基本形式是 while 条件表达式:。只要条件表达式为True,内部的处理就会持续执行。
重复直到计数器达到特定数值
首先是一个简单的例子。我们准备一个计数器变量,只在该数值满足特定条件的期间内持续循环。需要注意的是,如果忘记在循环内更改计数器的值,就会陷入无限循环(后述)。
# 将计数器变量初始化为0
count = 0
# 在count小于5的期间内,持续循环
while count < 5:
print(f"当前计数: {count}")
# 这行很重要!将count的值增加1
count += 1
print("循环已结束。")
# 执行结果:
# 当前计数: 0
# 当前计数: 1
# 当前计数: 2
# 当前计数: 3
# 当前计数: 4
# 循环已结束。
3. 应用示例:尝试用循环处理生成HTML文件
好了,让我们应用至今所学的知识,来看一个对Web开发者们来说更实用的例子。这是一个使用Python的循环处理来自动生成网站导航菜单HTML代码的程序。
执行这段代码后,会创建一个名为`navigation.html`的文件,其中写入了列表形式的菜单。这样就省去了手动编写多个<li>标签的麻烦!
【可完整运行的HTML示例】
以下代码本身就是Python脚本。如果您的本地环境安装了Python,将此代码保存为`generate_html.py`之类的文件名,然后在终端或命令提示符中执行`python generate_html.py`,就会在同一目录下生成`navigation.html`。
# -*- coding: utf-8 -*-
# 希望在菜单中显示的项目列表
menu_items = {
"首页": "index.html",
"关于我们": "about.html",
"服务": "services.html",
"博客": "blog.html",
"联系我们": "contact.html"
}
# 用于存储HTML片段的变量
html_content = """<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自动生成的导航</title>
<style>
body { font-family: sans-serif; }
nav ul { list-style: none; padding: 0; display: flex; gap: 1rem; }
nav a { text-decoration: none; color: #007BFF; padding: 0.5rem 1rem; border: 1px solid #ddd; border-radius: 5px; }
nav a:hover { background-color: #f0f0f0; }
</style>
</head>
<body>
<h1>导航菜单</h1>
<nav>
<ul>
"""
# 使用for循环从字典中取出键(文本)和值(链接),生成<li>标签
for text, link in menu_items.items():
html_content += f' <li><a href="{link}">{text}</a></li>\n'
# 添加HTML的页脚部分
html_content += """ </ul>
</nav>
</body>
</html>
"""
# 以"navigation.html"为名打开文件,并写入内容
try:
with open("navigation.html", "w", encoding="utf-8") as f:
f.write(html_content)
print("✅ navigation.html 生成成功!")
except IOError as e:
print(f"❌ 写入文件时发生错误: {e}")
4. 注意要点:循环控制技巧
循环处理非常方便,但为了避免意外行为,有几种控制方法是需要了解的。特别是“无限循环”、“break”和“continue”是重要的概念。
注意无限循环!
特别是在while语句中容易发生的是“无限循环”。这是一种由于用于结束循环的条件表达式永远保持为True,导致程序无法停止的现象。在下面的例子中,由于count的值没有变化,count < 5这个条件将永久满足。
# ⚠️ 此代码会陷入无限循环,执行时请注意!
count = 0
while count < 5:
print("这条消息将无限显示下去…")
# 缺少更新count值的处理(如 count += 1)!
中途跳出循环 (break)
在循环中途,有时希望在满足某个特定条件时完全终止处理。这时就可以使用break。例如,在列表中找到了特定元素后,后续的搜索就不再需要了。在这种时候break就很有用。
# 想要查找的文件
target_file = "python.png"
file_list = ["style.css", "index.html", "script.js", "python.png", "logo.svg"]
# 依次检查文件列表
for filename in file_list:
print(f"检查中: {filename}")
if filename == target_file:
print(f"🎉 找到了!: {target_file}")
# 找到了目标文件,所以跳出循环
break
# 执行结果:
# 检查中: style.css
# 检查中: index.html
# 检查中: script.js
# 检查中: python.png
# 🎉 找到了!: python.png
可以看到,当break被执行后,循环在没有检查"logo.svg"的情况下就结束了。
仅跳过本次处理 (continue)
与break会终止整个循环相对,continue是“仅跳过本次处理,进入下一次重复”的命令。例如,在想从大量文件中只处理图像文件(.jpg, .png)时,它非常方便。
file_list = ["memo.txt", "photo_01.jpg", "document.pdf", "photo_02.png", "archive.zip"]
# 循环文件列表
for filename in file_list:
# 如果文件名不是以 ".jpg" 或 ".png" 结尾…
if not (filename.endswith(".jpg") or filename.endswith(".png")):
# …就跳过这次处理,进入下一个文件
continue
# 这一行仅在是图像文件时执行
print(f"正在处理图像文件: {filename}")
# 执行结果:
# 正在处理图像文件: photo_01.jpg
# 正在处理图像文件: photo_02.png
总结
本次我们解说了Python循环处理的基础——for语句和while语句。
- for语句: 使用列表或
range(),方便地按固定次数或元素数量进行重复。 - while语句: 在满足某个条件的期间内持续重复,在重复次数不固定的情况下有效。
一开始可能会觉得困难,但请先从复制代码并让它运行起来开始,然后一点点地修改数值或列表内容,观察行为的变化。一旦掌握了循环处理,您的Web制作和业务效率必将大大提升!
作为下一步,要不要学习一下将处理整合在一起的“函数”呢?
讲解Python函数的创建和使用方法