函数、循环与
列表处理
第十二天,我把函数和循环组合起来。函数不仅能处理一次输入,也可以按指定次数重复工作,或接收一个列表并逐项完成任务。
让函数重复输出
参数 message 接收要输出的文字,参数 times 接收重复次数。range(times) 产生循环需要的数字,number 在每轮循环中接收其中一个数字。
day12.py
def repeat_message(message, times): # 定义重复输出函数
for number in range(times): # number依次得到0到times减1
print(number + 1, message) # 显示从1开始的编号和信息
repeat_message("坚持学习Python!", 5) # 调用函数并重复5次
range(5) 产生 0、1、2、3、4;输出时使用 number + 1,所以终端显示的编号是 1~5。变量名 number 可以更换,但它在这里清楚表达了“当前循环编号”。
函数接收整个列表
调用函数时,外部的 study_tasks 把整个任务列表传给参数 tasks。随后 task 在循环中依次接收列表中的一项任务。
show_tasks.py
def show_tasks(tasks): # tasks接收任务列表
print("任务列表:") # 输出列表标题
for task in tasks: # task依次接收每项任务
print("-", task) # 输出当前任务
study_tasks = ["复习英语", "练习数学", "学习Python"] # 创建任务列表
show_tasks(study_tasks) # 把列表传入函数
今天进一步理清了数据的传递:study_tasks 保存整个列表,tasks 在函数内部接住整个列表,task 则在每轮循环中接住当前的一项任务。
使用累计变量计算总分
最终练习把函数、列表、循环和 return 连在一起。total 从 0 开始保存累计结果,每轮循环把当前成绩加进去。
score_total.py
def calculate_total(scores): # scores接收成绩列表
total = 0 # 累计总分从0开始
for score in scores: # score依次接收每个成绩
total = total + score # 把当前成绩加进总分
return total # 全部累加后返回总分
student_scores = [80, 90, 70] # 创建成绩列表
result = calculate_total(student_scores) # 接收函数返回的总分
print("总分是:", result) # 输出最终结果
total 的变化是 0 → 80 → 170 → 240,最终正确输出总分 240。
return 的缩进位置
return total 与 for 对齐,因此它会等循环全部结束后再返回 240。如果把它缩进到循环内部,第一次加上 80 后函数就会被 return 立即终止,90 和 70 都不会再处理。
今天的小测
- 累计变量
total在还没有加任何成绩时应从 0 开始 - 循环变量
score会依次得到 80、90、70 return放进循环内部时会在第一次循环后返回 80,并终止函数
今天真正弄懂了什么
- 函数可以使用循环按指定次数重复工作
range(times)会产生从 0 到times - 1的数字- 循环变量会在每轮循环中接收一个新值
- 函数可以接收整个列表,并逐项处理列表内容
- 累计变量可以保存循环过程中不断变化的结果
return的缩进决定函数何时结束并送出结果- 以后学习新代码时,会使用行内注释帮助阅读每一行的作用
今天的关键不是记住某个变量名,而是看清每个变量在当时保存什么:参数接住传入的数据,循环变量接住当前一项,累计变量保存已经处理过的结果。