Python 循环
循环是编程中最强大的概念之一,它允许我们重复执行一段代码,直到满足特定条件为止。在Python中,循环结构使我们能够自动化和重复任务,极大提高了代码的效率和简洁性。
为什么需要循环?
想象一下,如果你需要打印数字1到100,没有循环的话,你可能需要编写100行代码。但有了循环,只需几行代码就能完成:
for i in range(1, 101):
print(i)
Python 中的循环类型
Python提供了两种主要的循环类型:
for
循环:用于迭代序列(如列表、元组、字典、集合或字符串)while
循环:当条件为真时重复执行代码块
让我们深入了解这两种循环。
For循环
基本语法
for 变量 in 序列:
# 循环体
这里的"序列"可以是任何可迭代对象,"变量"会在每次迭代中获取序列中的下一个值。
示例1:遍历列表
fruits = ["苹果", "香蕉", "樱桃"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
输出:
我喜欢吃苹果
我喜欢吃香蕉
我喜欢吃樱桃
示例2:使用range()函数
range()
函数是for循环的常见搭配,它生成一个数字序列:
# 打印1到5的数字
for i in range(1, 6): # 范围是1到5(不包括6)
print(i)
输出:
1
2
3
4
5
range()
函数有三种使用形式:
range(stop)
: 从0开始,到stop-1结束range(start, stop)
: 从start开始,到stop-1结束range(start, stop, step)
: 从start开始,到stop-1结束,步长为step
示例3:遍历字符串
for char in "Python":
print(char)
输出:
P
y
t
h
o
n
示例4:使用enumerate()获取索引
如果你需要同时访问元素及其索引:
fruits = ["苹果", "香蕉", "樱桃"]
for index, fruit in enumerate(fruits):
print(f"索引 {index}: {fruit}")
输出:
索引 0: 苹果
索引 1: 香蕉
索引 2: 樱桃
While循环
基本语法
while 条件:
# 循环体
只要条件为True
,循环体就会一直执行。
示例1:基础while循环
count = 1
while count <= 5:
print(count)
count += 1 # 不要忘记更新条件,否则会陷入无限循环
输出:
1
2
3
4
5
使用while循环时,请确保循环条件最终会变为False,否则会创建一个无限循环,导致程序无法正常结束。
示例2:带条件退出的循环
# 让用户猜测一个数字,直到猜对为止
secret_number = 7
guess = 0
while guess != secret_number:
guess = int(input("猜一个1到10之间的数字: "))
if guess == secret_number:
print("恭喜,你猜对了!")
else:
print("再试一次!")
循环控制语句
Python提供了几种控制循环执行的语句:
1. break语句
break
语句用于完全退出循环:
for i in range(1, 10):
if i == 5:
break
print(i)
输出:
1
2
3
4
2. continue语句
continue
语句跳过当前迭代,继续下一次迭代:
for i in range(1, 6):
if i == 3:
continue
print(i)
输出:
1
2
4
5
3. else子句
循环可以带有else
子句,当循环正常完成(不是通过break
退出)时执行:
for i in range(1, 5):
print(i)
else:
print("循环正常完成!")
输出:
1
2
3
4
循环正常完成!
而当循环通过break
退出时,else块不会执行:
for i in range(1, 5):
if i == 3:
break
print(i)
else:
print("循环正常完成!") # 不会执行
输出:
1
2
嵌套循环
循环内部可以包含其他循环,称为嵌套循环。外部循环每执行一次,内部循环将完整执行一次。
# 打印一个小乘法表
for i in range(1, 5):
for j in range(1, 5):
print(f"{i} x {j} = {i*j}", end="\t")
print() # 换行
输出:
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12
4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16
列表推导式 - 循环的简洁形式
列表推导式是Python的一个强大特性,它提供了一种创建列表的简洁方式:
# 创建1到10的平方列表
squares = [x**2 for x in range(1, 11)]
print(squares)
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
还可以添加条件:
# 只获取偶数的平方
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)
输出:
[4, 16, 36, 64, 100]
实际应用案例
案例1:文件处理
循环常用于处理文件内容:
# 假设我们有一个名为'data.txt'的文件
with open('data.txt', 'r') as file:
for line in file:
# 处理每一行
print(line.strip()) # strip()移除行尾的换行符
案例2:数据分析
计算一组数的统计信息:
numbers = [10, 25, 33, 46, 57, 62, 75, 81, 94]
# 计算总和、平均值、最大值和最小值
total = 0
maximum = numbers[0] # 假设第一个元素是最大值
minimum = numbers[0] # 假设第一个元素是最小值
for num in numbers:
total += num
if num > maximum:
maximum = num
if num < minimum:
minimum = num
average = total / len(numbers)
print(f"总和: {total}")
print(f"平均值: {average}")
print(f"最大值: {maximum}")
print(f"最小值: {minimum}")
输出:
总和: 483
平均值: 53.666666666666664
最大值: 94
最小值: 10
案例3:简单游戏循环
游戏开发中常用while循环来控制主游戏循环:
import random
# 简单的猜数字游戏
def number_game():
secret = random.randint(1, 100)
attempts = 0
max_attempts = 7
print("我想了一个1到100之间的数字,你有7次机会猜对它。")
while attempts < max_attempts:
try:
guess = int(input(f"尝试 {attempts + 1}/{max_attempts}: 请猜一个数字: "))
attempts += 1
if guess < secret:
print("太小了!")
elif guess > secret:
print("太大了!")
else:
print(f"恭喜!你用了{attempts}次猜对了!")
return
except ValueError:
print("请输入一个有效的数字!")
print(f"游戏结束!正确答案是{secret}。")
# 实际运行游戏需要调用此函数
# number_game()
性能考虑
在处理大量数据时,循环的效率很重要。以下是一些提高循环效率的技巧:
- 尽可能将计算放在循环外部
- 使用列表推导式代替传统for循环(在适当情况下)
- 避免在循环中频繁修改集合(如列表)的大小
- 考虑使用迭代器和生成器处理大数据集
总结
循环是Python中最基本也是最强大的控制流结构之一。通过本文,我们学习了:
for
循环和while
循环的基本语法和用法- 使用
range()
函数创建数字序列 - 循环控制语句:
break
、continue
和else
- 嵌套循环的概念和应用
- 列表推导式作为循环的简洁替代
- 循环在实际应用中的几个案例
通过掌握循环,你能够有效地处理重复性任务,使你的代码更加简洁和高效。
练习
要巩固你的理解,尝试以下练习:
- 编写一个程序,打印出1到100中所有能被3或5整除的数字。
- 创建一个程序,使用嵌套循环打印出一个5x5的乘法表。
- 编写一个程序,找出1到1000中的所有完美数(一个数等于它所有的正因子之和,不包括它自己)。
- 使用while循环实现一个简单的菜单系统,让用户选择不同的选项。
循环是编程的基础,通过不断练习和应用,你会逐渐掌握如何在实际问题中高效地使用循环。