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

本文介绍了Python函数的基础知识,包括函数定义与调用、空函数、返回值、函数的应用、函数的优势、局部与全局变量、参数类型(形参、实参、默认参数、可变参数、关键字参数)以及参数组合。还探讨了匿名函数(lambda)、递归函数的概念及应用,如阶乘计算、汉诺塔问题等,并通过实例展示了函数在实际编程中的应用,如9*9乘法表、素数判断、日期计算等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python函数基础知识

Python函数基础知识

5月19日课程总结

[var1]

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

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

1.函数范例

函数的定义与调用:

caf2a9bdb424889822cfe01ae56ac9fd.png

2.空函数

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

ea2434e3b2658edd6812fa683b25a3c8.png

3.函数返回值

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

[var1]

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

4b0f2b3467e11d392c171a72100920bc.png

0ea75360894e4fd830b880a4fd0f8b01.png

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

74d1aa095e0eafc9f9cdc00012fbf496.png函数的图像表示结果:

d2018d682024f45415f7c961d1e690d9.png

6a0f5d4c82abff7ef517b324ad8b94c8.png

数学运算部分:

827af548f28fbdc870ae21d48d047596.png

运行结果:

6bbb2839675239cd18de2e20f2cfd19e.png

6.函数的优势

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

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

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

7.函数的各种变量

1)局部变量

97726f9fb015c29de654f16ae9261878.png

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

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

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

2)全局变量

a74b458eee88960b4f9e97a17a8680c1.png

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

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

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

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

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

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

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

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

8.函数中的各种参数

1)形参与实参:

93efe19d17105799295e7e83af6e7930.png

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

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

2)默认参数

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

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

默认参数注意事项:

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

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

32fb656beaa16a35451e81ac00fd1e52.png

3)可变参数

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

060b62be1ad2b213c49d6ee6ed905de9.png

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

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

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

largs = [1,2,3]

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

func(*largs)

4)关键字参数

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

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

关键字参数用**kwargs;

de086f8d1d5539a953db5a5b1ab9cb31.png5)参数组合

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

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

参数总结

ea5ad6c305902f9f4332e9a55408d8b6.png

[var1]

1) 定义:

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

4a5fbaf32c028b4bff9ca84f369d5e6d.png

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

30,40

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

c113d27858bc1d01248236b27c52faf4.png

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

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

99d3314fbb4b2deb5ecebc075c69f0f1.png应用实例:作为内置函数的参数

ac54b241efa4e9053ff3970e5c98598d.png

a9da98d4a4b79e2fa6a0a16ee8735372.png

小练习

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

22cca5b9b058dbfb9618872cb5a37e5d.png

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

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

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

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

92ca80ebe375fa637b6dfe853361ae4d.png

[var1]

1.定义:

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

需求:

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

什么是递归函数?

1)阶乘的规律:

9af5bce4d93aae2eb57c586949c9c0fc.png

2)代码实现:

92bb988e75a7b153b40b281dcb024926.png

练习:

81027c9d4bbf9a7238fd1fb88f518283.png递归函数思路:

706eba1b85bc54e17f2b8625e443411f.png

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

9377d76ec22cb72a8247e7dd8ce6b59b.png

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

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

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

.

.

.

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

解决方法图解:

388f9ebd07cf6fb6b262ae9ef527c132.png

6862b1f684a95e89bfb8b531d1c6b3a5.png

1d92d1015e3fef12fa7a201b3f37f6ca.png

b8137416b4c725578253fd10e0cb787f.png

e1e04eec3d301e280e28c69bfe29f863.png

[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函数基础知识相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值