2: 函数

 

我们已经见过一个用于输出信息,名为print()的函数。当你要用到一个函数时,你需要写下他的名字并在后面的括号中放入一些实参。简单来讲,实参这个词的意思就是一个函数的输入。

然后,这个函数就会根据它的实参来做一些事。当一个函数有多个实参时,你需要用逗号(,)将它们分开。例如,你可以给 print多个实参;它会按序的将它们打印输出,并用空格来分开他们。

我们会用下面这个例子来证明。

示例
打印三个数字
上面示例程序中多余的空格对输出并没有任何影响。多余的空格在其他大多数情况下也都是无意义的。不过,要小心每一行开始时的额外空格,他们叫做缩进,并且有一个特殊的意义。当你不正确的使用时,缩进可能会造成错误(点击链接来看一个示例)。你将会在几节课后学到怎样正确的使用缩进。

一个函数也可以归还一个值(就像一个输出)。例如函数 max() 会归还实参中最大的那个数,这意味着这些实参必须都是数字。

示例
试着在运行之前预测下面这个程序的输出
返回值这个名词指的是一个函数归还的值。例如max(42, 17)这个函数,我们会说“函数max的返回值是42。”
函数max有一个表现类似的朋友:函数min,它会返回实参中的最小值

选择题练习: 最小与最大(一)
下面这个程序的输出是什么?
<pre>x = 13
y = 7
a = max(x+y, x*2)
b = min(x, y)
print(a,b)</pre>
正确!

函数们可以组合在一起用来创造更复杂的表达式。

简答练习: 最小与最大(二)
下面这个程序的输出是什么? 提示
<pre>x = min(max(13, 7), 9)
print(x)</pre>

正确!

在Python中你并不会只用到预先设定好的函数。在接下来几节课中,你会学到怎样定义新函数!

常见错误

如果你在调用一个函数时,没有足够的实参或者有太多的实参,那么你会得到一个错误信息。例如,max 需要至少一个输入:

示例
调用 max时没有足够的实参。

当你的代码没有正常运行时,仔细阅读你收到的错误信息是非常重要的。对于错误的地方,Python 通常会给你非常 有用的反馈。。但有一些情形下,你需要进行一些思考才能找出问题 — 下面是一个例子。

示例
按下 运行程序; 并看一看产生的错误。

Python说这里有一个语法错误,也就是说它无法理解你想干什么:

 Traceback (most recent call last):
   In line 2 of the code you submitted:
     bigger = max(3, 4)
          ^
 语法错误:无效的语法
事实上,bigger = max(3, 4)这行并没有问题。真正的错误其实是由前一行造成的:我们忘记在smaller = min(14, 99 后加上一个右括号),所以Python开始在下一行寻找右括号)。因此,当你在调试程序卡住时,试着检查Python提示的之前和之后的代码行。

练习

这是一个用到minmax函数的两部分练习。Maxime和Miniac 这两座城市之间是用一些桥梁连接着的。每座桥梁都有一个不同的承重限制。

编程练习: 一条路
对于第一部分,这两个城市之间有一条单行道。这条路有三座桥,重量限制分别为abc,如下图所示:

要想在这条路线上行驶,你的卡车必须先通过承重限制为a的桥梁,接着通过承重限制为b的桥梁,最后通过承重限制为c的桥梁。如果你的卡车超过这三个承重限制中的任意一个就会发生事故。编写一个程序,使它打印出在这条路上运输的最大载重量。 你的代码应该假设变量abc已经含有桥梁的承重限制。

编程练习: 两条路
第二部:现在我们会告诉你完整的故事。这两个城市之间还有一条含有两座桥的第二条路线,第一条的承重限制为d,第二条的承重限制为e,如下面所示。

你的卡车可以走任意一条路线。编写一个可以打印出在两个城市之间运输的最大重量的程序。假设变量abcde含有桥梁的承重限制。 提示 提示2 

练习:代码排序

代码排序又来啦,你必须用拖拉的方式重新排列它们使它们变成一个正确的程序。

综合练习: 代码排序
重新排列这些代码,使他能以升序的顺序打印输出x, y and z这三个数字,也就是说先打印最小的数,接着是中间的数,最后是最大的数。
用鼠标进行拖拉来重行排列每一行
  • print(max(x, y, z))
  • print(min(x, y, z))
  • print(x+y+z-min(x, y, z)-max(x, y, z))

当你完成上面的练习后,你有两个选择:

  • 你可以直接进入第三课,或者
  • 你可以在课程2X中做一些关于函数的额外练习。