当前位置:首页>python>跟着NOAI考纲学Python,学完就能考,第8课

跟着NOAI考纲学Python,学完就能考,第8课

  • 2026-10-11 07:45:00
跟着NOAI考纲学Python,学完就能考,第8课

每天一个知识点,带你自学NOAI,加入我们吧~

前面写的代码,用一次写一次。但如果同一段代码要用好多次呢?总不能复制粘贴十遍吧。这节课学函数——把一段代码打包起来,取个名字,以后一句话就能调用。

定义函数

用 def 关键字定义一个函数:

defsay_hello():print("你好!")say_hello()say_hello()

你好!你好!

拆开看:

•def say_hello(): — 定义一个叫 say_hello 的函数,冒号结尾

• 下面缩进的代码是函数的函数体,定义的时候不会执行

•say_hello() — 调用函数,加括号才会执行

定义函数 = 写好菜谱,调用函数 = 按菜谱做菜。写菜谱的时候不会做菜,你喊一声"做!"才动手。

给函数传参数

函数可以接收参数,这样每次调用可以传不同的值:

defsay_hello(name):print("你好," + name + "!")say_hello("小明")say_hello("小红")

你好,小明!你好,小红!

括号里的 name 就是参数。调用的时候传了 "小明",函数里的 name 就等于 "小明"。

参数可以有多个,用逗号隔开:

defadd(a, b):print(a + b)add(3, 5)add(10, 20)

830

返回值

上面的函数用 print 把结果直接打印出来了。但很多时候,你想让函数把结果交回来,自己再拿去用。这时候用 return:

defadd(a, b):returna + bresult = add(3, 5)print(result)print(add(10, 20) + 1)

831

拆开看:

•return a + b — 函数算完 a + b,把结果交回去

•result = add(3, 5) — 调用函数,返回值存到 result 里

•add(10, 20) + 1 — 返回值可以直接拿来运算,30 + 1 = 31

print 是把东西显示在屏幕上给你看。return 是把东西交回给程序,程序还能接着用。

return 会立刻结束函数

函数执行到 return 就停了,后面的代码不会执行:

defcheck(score):ifscore >= 60:return"及格"return"不及格"print(check(80))print(check(45))

及格不及格

传入80,score >= 60 成立,执行 return "及格",函数立刻结束,下面的 return "不及格" 不会执行。传入45,条件不成立,跳过第一个return,执行第二个。

组合起来用

函数可以调用函数,也可以和循环、列表配合。看一个实际的例子——算全班平均分:

defaverage(numbers):total = 0forninnumbers:total = total + nreturntotal / len(numbers)scores = [88, 92, 75, 60, 95]print("平均分:", average(scores))

平均分: 82.0

把"算平均分"这个逻辑打包成函数后,不管是语文成绩、数学成绩还是别的列表,都可以一句 average(列表) 搞定。

易错点

1. 定义了不调用,什么都不会发生

defsay_hello():print("你好!")# 只定义没调用,屏幕上什么都不输出

定义函数只是"写好菜谱",你不喊 say_hello(),它不会自己执行。

2. 调用时忘加括号

print(add)     # 输出的是函数本身,不是计算结果print(add(3, 5)) # 加括号才是调用,输出 8

3. 搞混 print 和 return

defadd_wrong(a, b):print(a + b)     # 只是显示,没有交回结果result = add_wrong(3, 5)print(result)

8None

函数里用了 print 而不是 return,所以屏幕上确实显示了8,但 result 拿到的是 None(什么都没有)。想把结果交回来,必须用 return。

动手试试

自己先想,想完了去香农平台上写代码跑一遍验证。

练习1:预测输出

下面这段代码运行后,屏幕上会输出什么?

defdouble(x):returnx * 2print(double(4))print(double(10) + 3)

提示:return 把结果交回来,交回来的值可以直接参与运算。

练习2:找bug

下面这段代码想算长方形的面积,但运行后 result 的值是 None。哪里出了问题?

defarea(width, height):print(width * height)result = area(5, 3)print("面积是:", result)

提示:回头看看"易错点"第3条。

练习3:写代码

写一个函数 max_of_three(a, b, c),接收三个数字,返回其中最大的那个。然后调用它,打印结果。

提示:可以用 if 判断,也可以想想之前学的列表有没有什么方法能帮忙。

去平台上手写代码

学会函数,你的代码可以"复用"了。回顾一下:

•def 函数名(参数): — 定义函数

•函数名(值) — 调用函数,括号不能少

•return — 把结果交回给程序,函数立刻结束

•print ≠ return — print是给你看的,return是给程序用的

这篇文章讲的是香农NOAI学习平台"Python基础"模块的第八课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。

香农NOAI学习平台地址:shannon.arpa.school微信扫码登录就能用,免费。找到「Python基础」→「函数」,从第一道题开始写。

下一篇讲字典——用"名字:值"的方式存数据,比列表更灵活,查东西更方便。

IOI2026国家队选拔第一名的他,IOAI国际人工智能奥赛也拿到了银牌
当年的IOI中国国家队成员,20年后过得怎么样?
IOAI人工智能奥赛获奖选手,被哪些世界顶尖大学抢走了?
NOAI人工智能奥赛与5大奥赛齐名,却不在白名单,还值得孩子花时间吗?
数学和信息学双料奥赛金牌邓明扬,最近一篇顶会论文让AI圈炸了
我们从2018年开始关注青少年AI竞赛
见证了NOAI从无到有
这里为你拆解这个赛事的每一个关键问题
欢迎关注公众号~
👇NOAI复赛集训开始招募
👇加入NOAI学习交流群
👆消除信息壁垒、少走弯路
👆获取往届真题、比赛资源
👆链接牛娃家长、抱团互助

最新文章

随机文章