第10天的目标是独立写程序,核心是把前几天的碎片知识织成一张网

第一步:逻辑拆解(算法思维)
在动笔写 Python 之前,我们要先在大脑里模拟一下电脑是怎么工作的。
1. 如何求平均值?
(1)人类做法:把所有数字加起来,数数有几个数字,然后一除。
(2)电脑做法:
①找个篮子(变量 total),初始放个 0。
②用 for 循环把列表里的数字一个个拿出来,丢进篮子累加。
③用 len() 函数数出列表长度。
④相除得到结果。
2. 如何求最大值?(打擂台法)
(1)核心思想:之前我提及到过,这个就像是"逐一比较"。
(2)电脑做法:
①设 max_val 等于列表的第一个数。
② 用 for 循环从第二个数开始比。
③如果 (if) 现在的数字比"擂主"大,那它就变成新的"擂主"。
④循环结束,剩下的最后那个"擂主"就是最大值。
第二步:代码实现
我们将这两个逻辑封(之前提及到的def函数)装进函数里。
定义一个大函数,用来分析数据
def analyze_data(num_list): #使用def函数,对代码进行命名:analyze_data(num_list)
注: 这里代码就是对数据data中的值进行分析,其中数据data的名字叫做"num_list";分析内容包括两个部分:平均值与最大值--- 第一部分:求平均值 ---
total = 0 # 初始化:准备一个变量来存总和,初始为0
for i in num_list: # 循环:把列表里的每个数字i 依次拿出来
total = total + i # 累加:把拿出来的 i 加到之前的总和里,注意for指令的空格
count = len(num_list) # 计数:算出列表里一共有多少个数字
avg = total / count # 计算:总和除以个数,得到平均值--- 第二部分:求最大值 ---
max_val = num_list[0] #初始化: 设擂主,默认列表里的第一个数字目前最大
for i in num_list: # 循环:再次遍历列表,让每个数字都来比一比
if i > max_val: # 判断:如果当前的数字 i比擂主 max_val 还要大
max_val = n # 替换:就把这个更大的数字i 赋值给 max_valreturn avg, max_val # 出厂:把算好的平均值和最大值一起送出去,注意这个位置
***注:*num_list[0] 中0,并不是数字0,前面len函数有提及到,指的是data中的数值位置
这个return函数,也是昨天提及到的调用函数
--- 第三部分:实际测试 ---
scores = [85, 92, 78, 90, 88, 95, 70] # 数据:准备一组测试用的数据
调用函数:把 scores 丢进函数,并用两个变量接收结果
average_result, max_result = analyze_data(scores)
print(f"平均分是:{average_result}") # 打印:显示算出来的平均值
print(f"最高分是:{max_result}") # 打印:显示算出来的最大值注: scores可以看做数据的名称,其实在python运行中,它就是data(num_list)中的num_list;调用函数就是最开始,我们用def函数给代码取得名字"def analyze_data"包括平均值与最大值(return avg, max_val)。
第三步:小白必看的重点解析
需要注意的一些事项
- 缩进是灵魂
在 def 下面的代码必须缩进(通常是 4 个空格)。在 for 下面的代码要进一步缩进。如果缩进乱了,Python 会报错或者逻辑出错。
- return 的作用
return 就像是工厂的出口。如果没有它,函数算完就丢了,外面的变量(比如 result_avg)就接不到这个值。
- 变量命名
上述代码用num_list 作为参数名,这样一眼就能看出这个函数需要传入一个"数字列表"。
第四步:今日练习建议
• 挑战练习:再写一个函数 get_min(num_list),找出这组数据里的最小值。
• 进阶思考:如果你的 my_scores 是一个空的列表 [],运行上面的代码会发生什么?
提示:len() 会变成 0,除以 0 会报错
实验记录:

