- 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 函数能提高应用的模块性,和代码的重复利用率。python包含众多内建函数,比如如print(),string.copy()……用户也可以自定义函数。
定义一个函数
函数定义的规则
- 代码块以
def
开头,后接函数名称和圆括号()
。 - 传入的参数和自变量必须放在圆括号中间。
- 语句第一行可以加入注释,存放函数说明。
- 函数内容以冒号
:
起始,并缩进。 return [statements]
结束函数并返回一个值给调用方,return不带表达式返回None。
#以下是定义的函数
def hello():
print("Hello World by fx")
#以下是运行过程
hello()
以高斯求和公式为例:
def Gauss_sum(first_num, last_num, i):
sum = (first_num+last_num)*i/2
return sum
f,l,n = input("按如下格式输入:首项 末项 项数\n").split(' ')
f = int(f)
l = int(l)
n = int(n)
Gauss_result = Gauss_sum(f, l, n)
print("高斯求和计算结果为",Gauss_result)
超好用的map()函数
是不是觉得以下内容太繁琐了?如果有10个、20个变量需要数字化的话,整个代码会非常冗长。
f = int(f)
l = int(l)
n = int(n)
可使用map()
函数来解决
str = input("按如下格式输入:首项 末项 项数\n")
f,l,n = map(int, str.split(' '))
map(func, sequence),将序列sequence中的每一个元素都作为参数带入函数func,再将结果组成一个新的序列(其实是迭代器)。迭代器可以直接赋值给多个变量,也可以通过list()
函数转化成列表。
def bigger(x):
x = x + 10
list1 = [1,2,3,4,5]
bigger_list1 = list(map(bigger, list1))
print(bigger_list1)
输出如下:
[11, 12, 13, 14, 15]
思考题1
编写一个程序,输入一个整数序列(用空格隔开每个数),计算每一个数除3后的余数,输出一个包含这些余数的新序列.
例如输入:
1 2 3 4 5 6
输出:
[1, 2, 0, 1, 2, 0]
提示:需要用到split()
和map()
,求余数的计算符是‘ % ’
思考题2
回到前文中都高斯求和函数,如果只输入首项、末项和公差,上述代码如何修改,以实现高斯求和?
进一步修改程序,实现以下内容:程序开始询问用户希望输入“首项、末项、项数”还是“首项、末项、公差”,然后根据用户的选择引导用户输入对应的内容,并通过函数计算高斯求和,最后输出。
再完善程序,使用循环,让程序可以不断计算高斯求和(每次计算完毕并输出后,继续下一轮计算),直到我们输入“END”,程序结束。