
🙋♀️ 个人主页:颜颜yan_
⭐ 本期精彩:一文读懂Python循环语句
🏆 热门专栏:零基础玩转Python爬虫:手把手教你成为数据猎人
🚀 专栏亮点:零基础友好 | 实战案例丰富 | 循序渐进教学 | 代码详细注释
💡 学习收获:掌握爬虫核心技术,成为数据采集高手,开启你的数据科学之旅!🔥 如果觉得文章有帮助,别忘了点赞👍 收藏⭐ 关注🚀,你的支持是我创作的最大动力!
文章目录
前言
循环是编程中最基本也是最强大的控制结构之一,它允许我们重复执行特定的代码块,直到满足某个条件为止。Python提供了两种主要的循环结构:while循环和for循环,以及用于控制循环执行的break和continue语句。本文将详细讲解这些循环结构的语法和使用方法,并通过实例展示其在实际编程中的应用。

while语句
while语句是一种先判断的循环结构,首先测试条件表达式,如果值为true,则执行语句组,如果条件表达式为false,则忽略语句组,继续执行后面的语句。
从流程图可以看出,while循环的执行过程是一个不断判断条件的循环过程:
- 首先判断条件表达式
- 如果条件为真,执行循环体,然后回到条件判断
- 如果条件为假,直接跳出循环

基本语法
while 条件表达式:
语句组
基本while循环
# 打印1到5的数字
count = 1
while count <= 5:
print(count)
count += 1

计算累加和
# 计算1到100的和
total = 0
num = 1
while num <= 100:
total += num
num += 1
print(f"1到100的和是: {total}")

无限循环
有时我们需要创建无限循环,然后在循环体内部使用条件语句来跳出循环:
# 模拟简单的菜单系统
while True:
print("\n===== 菜单 =====")
print("1. 查看信息")
print("2. 修改设置")
print("3. 退出程序")
choice = input("请输入选项 (1-3): ")
if choice == '1':
print("显示信息...")
elif choice == '2':
print("修改设置...")
elif choice == '3':
print("程序已退出")
break
else:
print("无效的选项,请重试")

while-else语句
Python的while循环可以包含else子句,当循环条件变为False时,else子句将被执行。
# 查找列表中的元素
numbers = [1, 3, 5, 7, 9]
target = 6
index = 0
while index < len(numbers):
if numbers[index] == target:
print(f"找到目标数字{target},位置是{index}")
break
index += 1
else:
print(f"列表中不存在数字{target}")

for语句
python语言中for语句用于遍历序列类型,序列包括字符串、列表和元组。
for循环的执行流程更加直观:
- 获取序列的第一个元素
- 判断序列中是否还有元素
- 如果有,执行循环体,然后获取下一个元素
- 如果没有,结束循环

基本语法
for 迭代变量 in 序列:
语句组
序列表示所有的实现序列的类型都可以使用for循环。迭代变量是从序列中迭代取出的元素。
遍历列表
# 遍历水果列表
fruits = ["苹果", "香蕉", "橙子", "草莓", "葡萄"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")

遍历字符串
# 遍历字符串中的字符
message = "Python"
for char in message:
print(char)

使用range()函数
range()函数可以生成一个数字序列,常用于for循环中:
# 打印平方数
for i in range(1, 6): # 生成1到5的序列
square = i ** 2
print(f"{i}的平方是{square}")

遍历字典
# 遍历字典的键值对
student = {
"name": "李明",
"age": 18,
"grade": "高三",
"score": 95
}
for key, value in student.items():
print(f"{key}: {value}")

使用enumerate()函数
enumerate()函数可以同时获取索引和元素:
# 使用enumerate()获取索引和元素
colors = ["红", "橙", "黄", "绿", "蓝", "紫"]
for index, color in enumerate(colors):
print(f"第{index+1}个颜色是{color}色")

for-else语句
与while循环类似,for循环也可以带有else子句,当for循环正常结束时(不是通过break跳出)执行else子句:
# 检查列表中的奇数
numbers = [2, 4, 6, 8, 10]
for num in numbers:
if num % 2 != 0:
print(f"找到奇数: {num}")
break
else:
print("列表中没有奇数")

break和continue语句
break和continue语句是控制循环执行流程的重要工具,它们的执行流程如下图所示:

break语句
break语句可用于while或for循环,它的作用是强行退出循环体,不再执行循环体中剩余的语句。
在while循环中使用break
# 查找第一个能被7整除的数
i = 1
while i <= 100:
if i % 7 == 0:
print(f"找到了第一个能被7整除的数: {i}")
break
i += 1

在for循环中使用break
# 查找特定元素并停止
names = ["张三", "李四", "王五", "赵六", "钱七"]
search_name = "王五"
for name in names:
if name == search_name:
print(f"找到了{search_name}!")
break
print(f"检查: {name}")

continue语句
continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。
在while循环中使用continue
# 打印1到10中除了5以外的所有数字
num = 0
while num < 10:
num += 1
if num == 5:
continue
print(f"当前数字: {num}")

在for循环中使用continue
# 打印所有不包含'e'的单词
words = ["apple", "banana", "orange", "grape", "kiwi"]
for word in words:
if 'e' in word:
continue
print(f"{word} 不包含字母'e'")

进阶应用
嵌套循环
循环可以嵌套使用,即在一个循环内部包含另一个循环。下面通过九九乘法表来演示嵌套循环的应用:
- 外层循环控制行数(i从1到9)
- 内层循环控制每行的列数(j从1到i)
- 每个内层循环完成后,外层循环进入下一次迭代
- 形成阶梯状的乘法表结构
# 打印乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行

列表推导式
列表推导式是Python的一个强大特性,可以用简洁的语法创建列表。
传统方法 vs 列表推导式对比
1. 创建平方数列表的对比:
传统方法:
squares_traditional = []
for x in range(1, 11):
squares_traditional.append(x**2)
# 结果: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表推导式:
squares_comprehension = [x**2 for x in range(1, 11)]
# 结果: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 过滤偶数的对比:
传统方法:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_traditional = []
for x in numbers:
if x % 2 == 0:
even_traditional.append(x)
# 结果: [2, 4, 6, 8, 10]
列表推导式:
even_comprehension = [x for x in numbers if x % 2 == 0]
# 结果: [2, 4, 6, 8, 10]
3. 复杂的列表推导式:
# 创建一个包含平方数的字典
square_dict = {x: x**2 for x in range(1, 6)}
print(square_dict)
# 从字符串列表中提取长度大于4的单词并转换为大写
words = ["python", "java", "c", "javascript", "go", "rust"]
long_words = [word.upper() for word in words if len(word) > 4]
print(long_words)

实际应用案例
斐波那契数列计算
斐波那契数列是一个经典的数学序列,每个数都是前两个数的和。通过for循环,我们可以高效地计算这个数列:
def fibonacci(n):
"""生成斐波那契数列的前n个数"""
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
fib_series = [0, 1] # 初始化前两个数
# 从第3个数开始计算
for i in range(2, n):
next_number = fib_series[i-1] + fib_series[i-2]
fib_series.append(next_number)
return fib_series
# 计算并显示斐波那契数列
fib_15 = fibonacci(15)
print(f"斐波那契数列的前15个数: {fib_15}")

小知识:斐波那契数列中,相邻两项的比值会逐渐趋向于黄金比例 φ ≈ 1.618,这是一个非常有趣的数学现象。

文本词频统计分析
在自然语言处理和数据分析中,词频统计是一个常见的任务。通过循环,我们可以高效地统计文本中各个词汇的出现频率。
- 遍历文本中的每个字符和单词
- 统计每个词汇的出现次数
- 过滤和排序高频词汇
- 生成可视化数据
def chinese_word_frequency(text):
"""统计中文文本中各词语出现的频率"""
import re
# 定义常见的中文词汇模式
chinese_words = re.findall(r'[\u4e00-\u9fff]+', text)
english_words = re.findall(r'[a-zA-Z]+', text)
# 进一步分析中文词汇(简单的2-3字词分割)
analyzed_words = []
for word in chinese_words:
if len(word) >= 2:
# 提取常见词汇
for i in range(len(word) - 1):
if i + 2 <= len(word):
analyzed_words.append(word[i:i+2])
if i + 3 <= len(word):
analyzed_words.append(word[i:i+3])
# 添加英文单词
for word in english_words:
analyzed_words.append(word.lower())
# 统计频率
frequency = {}
for word in analyzed_words:
if len(word) >= 2: # 只考虑长度>=2的词
frequency[word] = frequency.get(word, 0) + 1
return frequency
# 测试文本
sample_text = """
Python是一种广泛使用的高级编程语言,Python的设计具有很强的可读性。
相比其他语言经常使用英文关键字,其他语言的一些标点符号,Python具有相对简单的语法。
相对其他动态类型语言,Python拥有相对较少的关键字。Python的核心哲学总结起来就是:
优美胜于丑陋,明了胜于晦涩,简洁胜于复杂。Python开发者的哲学是用一种方法,
最好是只有一种方法来做一件事。Python是一种解释型语言,Python可以应用于多个领域。
"""
# 统计单词频率
word_count = chinese_word_frequency(sample_text)
# 过滤高频词并排序
frequent_words = {word: count for word, count in word_count.items() if count >= 2}
sorted_words = sorted(frequent_words.items(), key=lambda x: x[1], reverse=True)
print("高频词汇统计结果(出现次数 ≥ 2):")
for word, count in sorted_words:
print(f"'{word}' 出现了 {count} 次")

🎯 与我一起学习成长
掌握循环结构是编程的基础,它们使得我们能够高效地处理重复任务和数据集合。通过本文的示例和案例,希望您对Python的循环结构有了更深入的了解,并能在实际开发中灵活运用这些知识。循环不仅是编程的基础工具,更是解决复杂问题的强大武器!🐍✨
我是颜颜yan_,一名专注于技术分享的博主。如果这篇文章对你有帮助,欢迎关注我的更多精彩内容!
📚 专栏推荐
💬 期待与你交流
- 有疑问?欢迎在评论区留言讨论
- 想深入学习?关注我获取更多优质教程
- 觉得有用?别忘了点赞👍 收藏⭐ 关注🚀

2063

被折叠的 条评论
为什么被折叠?



