学径 LearnPath

CAICP-E · Python 编程基础

把做法装成工具

自己写函数,也会用现成的内置函数。

讲解模式

这一节要学会什么

#what

有些步骤会反复出现。 可以包成一个 函数。 写一次,用很多次。不必把同一段代码复制来复制去。

你会用 def 定义函数。会写 greet(name)。 会写 rectangle_area(w, h),用 return 把面积送出来。

Python 还准备了许多现成帮手。这叫 内置函数。 真正要用的是:minmaxsumlen。给一组分数找最低、最高、总和、人数。

工具箱里还有 absroundpowrangesorted。 先认一认,不必全写一遍。

食谱写一次,尺子人人用

#hook

做蛋炒饭有一套步骤。你不会每次从零发明。 你会按食谱做。

函数就是程序里的食谱。写一次,用很多次。

教室里还有尺子、橡皮。谁都可以借。 不必每人自己削一把尺子。

内置函数就是公用文具。直接喊名字,带上括号。

函数像食谱

如果觉得有点难 先写一个只 print 的打招呼函数。 再给它加一个名字参数。 内置函数一次只试一个。

如果已经会了 写出返回长方形面积的函数。 再用 max、min、sum、len 算一组数的平均。 工具箱里还有 abs、round、pow、range、sorted,见到能认就行。

def:把做法写在墙上

#explore-def

同一段代码复制三遍,改一处就要改三处。容易漏。 所以装成工具。

定义用 def。后面写函数名和括号。 不要忘了冒号。里面的句子要缩进。

python
def say_hello():
    print("你好")

say_hello()
say_hello()

会打印两行你好。上面是定义。 下面两行是调用。调用就是按铃:把食谱拿出来做一遍。

墙上是食谱,铃是调用

函数名也用小写加下划线。和变量命名一样。

还没定义就调用,会报错。要先写 def,再调用。

只定义不调用,屏幕上什么都不会出现。食谱贴在墙上,不等于饭已经熟了。

一张食谱做出三盘炒饭

无参函数:括号里是空的。它不需要额外材料。

greet:把名字递进去

#explore-arg

括号里的名字叫参数。调用时把值放进去。

python
def greet(name):
    print("你好,", name)

greet("小明")
greet("小红")

name 是参数。它表示:这位朋友叫什么。 每次调用可以换人。

不同姓名牌丢进同一张招呼食谱

可以有多个参数。

python
def add_print(a, b):
    print(a + b)

add_print(3, 5)

会打印 8。先写的对第一个,后写的对第二个。

名字要能看懂。namewhx1x2 更清楚。 除非题目就那样写。

这节课的第一件小活:写出你的 greet。换三个同学的名字,各叫一次。

return:把面积送出来

#explore-return

print 只是显示。外面拿不到这个值去做别的事。 要用 return 送出来。

python
def rectangle_area(w, h):
    return w * h

a = rectangle_area(4, 3)
print(a)
print(rectangle_area(5, 2) * 2)

rectangle_area(4, 3) 的结果是 12。可以放进 a。 也可以拿去再乘 2。

函数递出一个密封盒,屏幕只给人看

print 给眼睛看。return 给程序接着用。

return 一执行,函数就结束。后面的句子不会再跑。

python
def demo():
    return 1
    print("看不到我")

调用后不会打印那句话。

没有 return 时,函数默认送回 None。意思是:没什么值。 所以要继续计算,就记得 return

参数是进去的材料。返回值是出来的成品。 wh 是宽和高。乘出来的面积,才是要送出的答案。

这节课的第二件小活:写出 rectangle_area。算 4×3,再算 6×5。 把两次结果加起来。

现成工具箱:先用四个帮手

#explore-toolbox

自己做的函数要 def。下面这些不用。 Python 已经做好了。

工具箱

先把这四个用在成绩单上。

min 找最小,max 找最大。

python
print(min(3, 9, 2))
print(max([3, 9, 2]))

最小 2,最大 9。可以直接写几个数,也可以放进列表。

sum 求和。len 数个数。 列表、字符串都能用 len

python
nums = [3, 9, 2, 7]
print(sum(nums))
print(len(nums))
print(len("你好"))

总和 21,个数 4。「你好」有 2 个字。

这些函数都要加括号。括号里放材料。 材料的意义要想清楚: len 问长度,sum 问总和。

教室共享笔筒里的尺子橡皮

工具箱里还有,先认一认,不必全写一遍:

  • abs 去掉负号,abs(-5) 是 5
  • round 四舍五入,round(3.6) 是 4
  • pow 乘方,pow(2, 3) 是 8
  • range 排出一串整数,循环里用过
  • sorted 另给一份排好的列表

负八翻成八,三点六进到四

给一组分数做统计

#explore-stats

把工具箱用在成绩单上。

python
scores = [90, 80, 70, 100]
print(min(scores), max(scores))
print(sum(scores), len(scores))

最低 70,最高 100。总和 340,人数 4。

墙上四科分数标着最低最高总和个数

平均数自己组合:

python
avg = sum(scores) / len(scores)
print(round(avg, 1))

先求和,再除以个数。再 round 到一位小数。 这里是 85.0

round 就在工具箱里。统计时用得上,先这样跟一遍。

总和除以个数,留一位小数

自己的工具和现成的工具,可以一起用。先进去什么,再出来什么,想清楚就行。

这节课我学会了

#review

记住这些:

  1. def 定义,名字后加括号和冒号。
  2. 调用:写出名字和括号。只定义不调用,不会自己跑。
  3. 参数是进去的材料。return 把结果送出来。
  4. 内置函数不用自己 def。会用 min max sum len
  5. 平均数:sum 除以 len,再用 round
  6. 工具箱里还有 abs round pow range sorted,见到能认就行。

试着在心里跑一遍:

python
def greet(name):
    print("你好,", name)

greet("小派")
print(min(3, 9, 2))

会印出招呼,再印出 2。

下一课才学找东西和修 bug。先把工具装好、借好。

试一试

#evaluate

看完就来检查一下。选错了也可以再想。

单选题

调用几次

定义 greet(name) 里有一句 print。连续写两行 greet(「小明」) 和 greet(「小红」)。屏幕上几行招呼?

单选题

return 的面积

def rectangle_area(w, h): return w * h。执行 x = rectangle_area(4, 3) 后,x 是?

单选题

求和与个数

nums = [1, 2, 3]。sum(nums) 和 len(nums) 分别是?

多选题

函数和内置帮手

下列说法正确的有哪些?可以多选。

可多选

未登录时不会保存学习进度