# 打印班级前五名同学的名字
= ["小明", "小红", "小华", "小李", "小张"]
top_students
print("班级前五名同学是:")
for student in top_students:
print(f"- {student}")
班级前五名同学是:
- 小明
- 小红
- 小华
- 小李
- 小张
想象你在做体育课的热身运动,需要做10个俯卧撑。你不会每次都写”做一个俯卧撑”,而是说”重复10次”。Python中的循环就是这个道理!
for
循环就像是一个”计数器”,可以帮我们重复执行特定的任务。
# 打印班级前五名同学的名字
= ["小明", "小红", "小华", "小李", "小张"]
top_students
print("班级前五名同学是:")
for student in top_students:
print(f"- {student}")
班级前五名同学是:
- 小明
- 小红
- 小华
- 小李
- 小张
range()
函数可以生成一系列数字,常用于控制循环次数:
# 做5次俯卧撑
print("开始锻炼:")
for i in range(5): # 从0数到4,总共5次
print(f"第{i+1}个俯卧撑")
# range的三种用法
print("\nrange的三种用法:")
print("range(5):", list(range(5))) # 从0开始,到5结束
print("range(2, 5):", list(range(2, 5))) # 从2开始,到5结束
print("range(1, 10, 2):", list(range(1, 10, 2))) # 从1开始,到10结束,每次加2
开始锻炼:
第1个俯卧撑
第2个俯卧撑
第3个俯卧撑
第4个俯卧撑
第5个俯卧撑
range的三种用法:
range(5): [0, 1, 2, 3, 4]
range(2, 5): [2, 3, 4]
range(1, 10, 2): [1, 3, 5, 7, 9]
# 成绩统计计算
= [85, 55, 92, 45, 78, 65, 88]
test_scores print("成绩分析:")
# 初始化统计变量
= 0
total = 0
count
# 遍历所有分数
for score in test_scores:
if score >= 60: # 及格
+= score
total += 1
count
# 输出统计结果
if count > 0:
= total / count
average print(f"及格人数:{count}")
print(f"及格分数平均分:{average:.1f}")
else:
print("没有及格的分数")
成绩分析:
及格人数:5
及格分数平均分:81.6
while
循环会在条件为真时一直重复。就像你玩游戏时的”只要还有生命值就继续玩”。
# 模拟倒计时
= 5
time_left print("倒计时开始!")
while time_left > 0:
print(f"还剩 {time_left} 秒")
= time_left - 1
time_left print("时间到!")
倒计时开始!
还剩 5 秒
还剩 4 秒
还剩 3 秒
还剩 2 秒
还剩 1 秒
时间到!
# 猜数字游戏
import random
= random.randint(1, 10) # 生成1-10的随机数
secret = 0
attempts = 3
max_attempts
print("猜数字游戏开始!(1-10)")
while attempts < max_attempts:
try:
= int(input(f"还剩{max_attempts - attempts}次机会,请猜一个数字:"))
guess += 1
attempts
if guess == secret:
print(f"恭喜你,猜对了!答案就是{secret}")
break
elif guess < secret:
print("猜小了!")
else:
print("猜大了!")
except:
print("请输入有效的数字!")
print(f"游戏结束!正确答案是{secret}")
有时我们需要在特定情况下改变循环的行为:
# 模拟找座位
= ["空", "已占", "空", "已占", "空"]
seats
print("寻找空座位:")
for i, status in enumerate(seats):
if status == "已占":
print(f"第{i+1}号座位已占,继续找下一个")
continue # 跳过已占座位
print(f"第{i+1}号座位是空的,可以坐!")
break # 找到空座位就停止寻找
寻找空座位:
第1号座位是空的,可以坐!
循环中还可以包含循环,就像你在完成作业时:对每一科(外层循环),都要做多道题(内层循环)。
# 打印九九乘法表(一部分)
print("九九乘法表:")
for i in range(1, 4): # 只打印前三行
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
九九乘法表:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
🌟 要点总结
- for循环用于知道循环次数的情况
- while循环用于根据条件重复的情况
- range()函数可以生成数字序列
- break用于提前结束循环
- continue用于跳过当前轮
- pass用于占位
- 可以在循环中嵌套循环
想象你在做数学题,要写出1到10的平方数。你可以一个一个计算,也可以用一个数学公式直接表达。列表推导式就像这样的”公式”,帮我们快速创建列表!
传统方式vs列表推导式:
# 传统方式:创建1到5的平方数
= []
squares1 for i in range(1, 6):
** 2)
squares1.append(i print("传统方式:", squares1)
# 列表推导式:一行搞定!
= [i ** 2 for i in range(1, 6)]
squares2 print("列表推导式:", squares2)
传统方式: [1, 4, 9, 16, 25]
列表推导式: [1, 4, 9, 16, 25]
列表推导式的基本格式是:
for 变量 in 序列] [表达式
就像在说:
= [85, 92, 78, 95, 88]
scores = ['优秀' if x >= 90 else '良好' if x >= 80 else '及格' if x >= 60 else '不及格' for x in scores]
grades
print("成绩:", scores)
print("等级:", grades)
成绩: [85, 92, 78, 95, 88]
等级: ['良好', '优秀', '及格', '优秀', '良好']
# 找出及格的分数
= [65, 45, 75, 85, 55, 90, 82]
scores = [score for score in scores if score >= 60]
passing_scores print("所有分数:", scores)
print("及格分数:", passing_scores)
所有分数: [65, 45, 75, 85, 55, 90, 82]
及格分数: [65, 75, 85, 90, 82]
# 把名字都变成大写
= ["alice", "bob", "charlie", "david"]
names = [name.upper() for name in names]
upper_names print("原始名单:", names)
print("大写名单:", upper_names)
原始名单: ['alice', 'bob', 'charlie', 'david']
大写名单: ['ALICE', 'BOB', 'CHARLIE', 'DAVID']
可以在列表推导式中加入if条件,格式是:
for 变量 in 序列 if 条件] [表达式
# 找出1-10中所有偶数的平方
= [x**2 for x in range(1, 11) if x % 2 == 0]
even_squares print("1-10中偶数的平方:", even_squares)
# 找出字符串列表中长度大于3的单词
= ["cat", "dog", "elephant", "bird", "butterfly"]
words = [word for word in words if len(word) > 3]
long_words print("\n长度大于3的单词:", long_words)
1-10中偶数的平方: [4, 16, 36, 64, 100]
长度大于3的单词: ['elephant', 'bird', 'butterfly']
🌟 要点总结
- 列表推导式可以简化代码
- 可以带条件筛选数据
- 列表推导式比传统循环更简洁