python中给出一个不超过10的正整数n_Python函数基础知识

Python函数基础知识

Python函数基础知识

5月19日课程总结

[var1]

问题:我们为什么需要函数?

答:如果在开发程序时,需要某块代码多次,但是为了提高编写的效率,以及代码的重用,所以把具有独立功能的代码块组成一个个小模块,这就是函数

1.函数范例

函数的定义与调用:

python中给出一个不超过10的正整数n_Python函数基础知识_第1张图片

2.空函数

定义一个什么也不用做的空函数,可以用pass语句;pass可以用作占位符,当你还没想好接下来的代码怎么写时,可以先用pass让你的代码运行起来。

python中给出一个不超过10的正整数n_Python函数基础知识_第2张图片

3.函数返回值

所谓“返回值”,就是程序中,函数完成一件事后函数得出的算式并且返回给调用者的结果,没有返回值,则默认为None。

[var1]

输入第一行中给出两个不超过100的正整数,分别是系统产生的随机数、以及猜测的最大次数N。随后每行给出一个用户,直到出现负数为止。

python中给出一个不超过10的正整数n_Python函数基础知识_第3张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第4张图片

4.函数的应用:打印图像以及数学运算

python中给出一个不超过10的正整数n_Python函数基础知识_第5张图片函数的图像表示结果:

python中给出一个不超过10的正整数n_Python函数基础知识_第6张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第7张图片

数学运算部分:

python中给出一个不超过10的正整数n_Python函数基础知识_第8张图片

运行结果:

python中给出一个不超过10的正整数n_Python函数基础知识_第9张图片

6.函数的优势

从理论上说,不用函数,也能够编程,我们在前面已经写了程序,就没有写函数,当然,用python的内建函数姑且不算了。现在之所以使用函数,主要是:

降低编程的难度(分而治之的思想)

代码重用。避免了重复劳动,提供了工作效率。

7.函数的各种变量

1)局部变量

python中给出一个不超过10的正整数n_Python函数基础知识_第10张图片

1.局部变量,就是在函数内部定义的变量。

2.不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响。

3.局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用。

2)全局变量

python中给出一个不超过10的正整数n_Python函数基础知识_第11张图片

如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量。

全局变量能够在所有的函数中进行访问

如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错

如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的

问:不使用global声明全局变量时不能修改全局变量?

答:global的本质是声明可以修改全局变量的指向, 即变量可以指向新的数据。

1). 不可变类型的全局变量: 指向的数据不能修改, 不使用global时无法修改全局变量。

2). 可变类型的全局变量: 指向的数据可以修改, 不使用global时可以修改全局变量。

8.函数中的各种参数

1)形参与实参:

python中给出一个不超过10的正整数n_Python函数基础知识_第12张图片

定义时小括号中的参数,用来接收参数用的,称为 “形参”

调用时小括号中的参数,用来传递给函数用的,称为 “实参“

2)默认参数

需求: 定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?

默认参数可以降低调用函数的难度。

默认参数注意事项:

有多个参数时,变化大放前面,变化小的放后面;

必选参数在前,默认参数在后。

python中给出一个不超过10的正整数n_Python函数基础知识_第13张图片

3)可变参数

可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。

python中给出一个不超过10的正整数n_Python函数基础知识_第14张图片

如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?

Python 允许你在 list 或 tuple 前面加一个 * 号

把 list 或 tuple 的元素变成可变参数传进去:

largs = [1,2,3]

func(largs[0],largs[1],largs[2])

func(*largs)

4)关键字参数

关键字参数允许传入 0 个或任意个含参数名的参数;

这些关键字参数在函数内部自动组装为一个 dict;

关键字参数用**kwargs;

python中给出一个不超过10的正整数n_Python函数基础知识_第15张图片5)参数组合

参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。

参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数。

参数总结

python中给出一个不超过10的正整数n_Python函数基础知识_第16张图片

[var1]

1) 定义:

匿名函数指一类无需定义标识符的函数与子程序,Python用lambda语法定义匿名函数,只需要用表达式无需声明。(省略了用def声明函数的标准步骤。期间两个变量用冒号分隔。)

python中给出一个不超过10的正整数n_Python函数基础知识_第17张图片

以上图片显示出的结果分别为:

30,40

lambda函数的语法只包含一个语句,如下:

c113d27858bc1d01248236b27c52faf4.png

lambda函数能接收任何数量的参数,但只能返回一个表达式的值。

2)应用实例:函数作为参数传递

python中给出一个不超过10的正整数n_Python函数基础知识_第18张图片应用实例:作为内置函数的参数

python中给出一个不超过10的正整数n_Python函数基础知识_第19张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第20张图片

小练习

问题描述1: 有一个整数列表(若干个元素), 要求调整元素顺序,把所有的奇数放在前面,偶数放在后面。

python中给出一个不超过10的正整数n_Python函数基础知识_第21张图片

问题描述2:给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;

在原始数组上进行移动操作, 勿创建新的数组;

#输入: 数组的记录;0 7 0 2

#输出: 调整后数组的内容; 7 2 0 0

python中给出一个不超过10的正整数n_Python函数基础知识_第22张图片

[var1]

1.定义:

已知: 函数可以调用函数。结论: 一个函数在内部调用自己本身,这个函数就是递归数。

需求:

计算阶乘 factorial: n! = 1 * 2 * 3 * … * n

什么是递归函数?

1)阶乘的规律:

python中给出一个不超过10的正整数n_Python函数基础知识_第23张图片

2)代码实现:

python中给出一个不超过10的正整数n_Python函数基础知识_第24张图片

练习:

python中给出一个不超过10的正整数n_Python函数基础知识_第25张图片递归函数思路:

python中给出一个不超过10的正整数n_Python函数基础知识_第26张图片

递归函数模型:汉诺塔问题

python中给出一个不超过10的正整数n_Python函数基础知识_第27张图片

n代表汉诺塔盘子的个数:

n=1,sum=1*(2**1-1)

n=2,sum=3*(2* *2-1)

.

.

.

n=n,sum=2n-1(2n-1)

解决方法图解:

python中给出一个不超过10的正整数n_Python函数基础知识_第28张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第29张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第30张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第31张图片

python中给出一个不超过10的正整数n_Python函数基础知识_第32张图片

[var1]

1.编程实现 9*9乘法表(循环嵌套的复习)

a = 1

b = 1

print('%d* %d = %d\t' % (a , b,a*b))

for item in range(8):

a += 1

print('%d* %d = %d\t' % (a, b, a * b))

b += 1

print('%d* %d = %d\t' % (a, b, a * b))

2. 用函数实现求100-200里面所有的素数。

提示:素数的特征是除了1和其本身能被整除,其它数都不能被整除的数

def qiusushu():

list = []

for a in range(100, 200):

for i in range(2, int(a-1)):

list.append(int(a % i))

if list.count(0) != 0:

del list[:]

else:

print(a)

qiusushu()

3.用函数实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去。

def runnian():

x = input("请输入的年份:")

y = input("请输入的月份:")

z = input("请输入的日期:")

li = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

if ((int(x) % 4 == 0) and (int(x) % 100 != 0)) or (int(x) % 400 == 0):

days = 0

for i in range(1, int(y)):

days += li[i]

if int(y) >= 3:

result = days + int(z) + 1

else:

result = days + int(z)

print(result)

else:

days = 0

for i in range(1, int(y)):

days += li[i]

result = days + int(z)

print(result)

runnian()

4.题目需求:对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:

f(13) = 1 ** 2 + 3 ** 2 = 10

f(207) = 2 ** 2 + 0 ** 2 + 7 ** 2 = 53

Python函数基础知识相关教程

你可能感兴趣的:(python中给出一个不超过10的正整数n_Python函数基础知识)