1. 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
  2. 函数能提高应用的模块性,和代码的重复利用率。python包含众多内建函数,比如如print(),string.copy()……用户也可以自定义函数。

定义一个函数

函数定义的规则

  1. 代码块以def开头,后接函数名称和圆括号()
  2. 传入的参数和自变量必须放在圆括号中间。
  3. 语句第一行可以加入注释,存放函数说明。
  4. 函数内容以冒号:起始,并缩进。
  5. return [statements]结束函数并返回一个值给调用方,return不带表达式返回None。

image.png

  1. #以下是定义的函数
  2. def hello():
  3. print("Hello World by fx")
  4. #以下是运行过程
  5. hello()

以高斯求和公式为例:

  1. def Gauss_sum(first_num, last_num, i):
  2. sum = (first_num+last_num)*i/2
  3. return sum
  4. f,l,n = input("按如下格式输入:首项 末项 项数\n").split(' ')
  5. f = int(f)
  6. l = int(l)
  7. n = int(n)
  8. Gauss_result = Gauss_sum(f, l, n)
  9. print("高斯求和计算结果为",Gauss_result)

超好用的map()函数

是不是觉得以下内容太繁琐了?如果有10个、20个变量需要数字化的话,整个代码会非常冗长。

  1. f = int(f)
  2. l = int(l)
  3. n = int(n)

可使用map()函数来解决

  1. str = input("按如下格式输入:首项 末项 项数\n")
  2. f,l,n = map(int, str.split(' '))

map(func, sequence),将序列sequence中的每一个元素都作为参数带入函数func,再将结果组成一个新的序列(其实是迭代器)。迭代器可以直接赋值给多个变量,也可以通过list()函数转化成列表。

  1. def bigger(x):
  2. x = x + 10
  3. list1 = [1,2,3,4,5]
  4. bigger_list1 = list(map(bigger, list1))
  5. print(bigger_list1)

输出如下:

  1. [11, 12, 13, 14, 15]

思考题1

编写一个程序,输入一个整数序列(用空格隔开每个数),计算每一个数除3后的余数,输出一个包含这些余数的新序列.
例如输入:

  1. 1 2 3 4 5 6

输出:

  1. [1, 2, 0, 1, 2, 0]

提示:需要用到split()map(),求余数的计算符是‘ % ’

思考题2

  1. 回到前文中都高斯求和函数,如果只输入首项、末项和公差,上述代码如何修改,以实现高斯求和?

  2. 进一步修改程序,实现以下内容:程序开始询问用户希望输入“首项、末项、项数”还是“首项、末项、公差”,然后根据用户的选择引导用户输入对应的内容,并通过函数计算高斯求和,最后输出。

  3. 再完善程序,使用循环,让程序可以不断计算高斯求和(每次计算完毕并输出后,继续下一轮计算),直到我们输入“END”,程序结束。