目录

  • 前言
    • ●  Python解释器安装
    • ●  PyCharm开发环境
  • Python程序设计实验
    • ●  实验1 IDLE与代码编写规范
    • ●  实验2 输入输出与数据类型
    • ●  实验3 字符串处理
    • ●  实验4 数据运算
    • ●  实验5 列表与元组应用
    • ●  实验6 字典与集合应用
    • ●  实验7 if语句与match语句
    • ●  实验8 使用循环语句
    • ●  实验9 异常处理
    • ●  实验10 函数应用
    • ●  实验11 类的应用
    • ●  实验12 模块应用
    • ●  实验13  应用re模块
    • ●  实验14 文件处理
    • ●  实验15 用户界面设计
    • ●  实验18 SQLite数据库应用
    • ●  理论考试模拟试题A
    • ●  理论考试模拟试题B
    • ●  理论考试模拟试题C
    • ●  理论考试模拟试题D
  • 学习参考
    • ●  01 Python及其IDLE环境
    • ●  02 Python代码规范
    • ●  03 常量和变量
    • ●  04 输入输出
    • ●  05 运算符
    • ●  06 数值类型
    • ●  07 字符串
    • ●  08 列表
    • ●  09 元组
    • ●  10 字典
    • ●  11 集合
    • ●  12 条件语句
    • ●  13 循环语句
    • ●  14 异常处理
    • ●  15 自定义函数
    • ●  16 内置函数
    • ●  17 模块导入与定义
    • ●  18 math模块
    • ●  19 os模块
    • ●  20 time模块
    • ●  21 random模块
    • ●  22 文本文件
    • ●  23 二进制文件
    • ●  24 类的创建和使用
    • ●  25 类的继承与多态
 实验10 函数应用

教学视频-->>

任务1 函数的定义与参数传递

    定义函数funS10T1(n),返回帕多瓦数列的第n项。

要求:

1、输入一个正整数n,调用funS10T1函数得到帕多瓦数列的第n项并输出。如果n为无效数据则输出ERROR。

2、函数和程序保存到:s10t1.py

3、程序执行效果:

输入1个正整数:33

第33项=7739

【参考与提示】

1、帕多瓦数列的前三项为1,1,2。从第4项起通项公式为f(n)=f(n-2)+f(n-3),n>3。

2、在函数体内,可利用return语句返回函数值。

3、自定义函数须写在调用它的代码之前。




    定义函数funS10T1(m,n),判断m与n是否互质。

要求:

1、输入一个大于10的正整数n,调用上述函数得到[2,n]上互质的数对数目(注:[2,3]与[3,2]视为一对)。如果n为无效数据则输出ERROR。

2、函数和程序保存到:s10t1.py

3、程序执行效果:

输入1个正整数:1111

互质数对=374601

【参考与提示】

1、如果正整数m与n的最大公约数为1,则称为它们互质。

2、辗转相除法可计算m与n的最大公约数。

3、在函数体内,可利用return语句返回函数值。

4、自定义函数须写在调用它的代码之前。


任务2 匿名函数的应用

    设a=[(7,3),(3,8),(5,6),(1,2)],输入2个正整数m,n,将(m,n)添加到a中后对a按元组的第2元素递增排序。输出(m,n)在排序中的最小位置索引(非负整数),n为无效数据则输出ERROR。

要求:

1、使用匿名函数完成排序。

2、函数和程序保存到:s10t2.py

3、程序执行效果:

输入2个正整数:2,5

位置索引=2

【参考与提示】

    可使用列表的内置函数sort直接对列表元素排序。该函数的key参数可设置排序的依据,可赋值为类名或函数名(包括匿名函数),表示列表的元素按key转换后的数据排序。注意:排序后列表的元素并没有转换为其他类型。




    设a=[63,78,96,5,72,20,63,30,4,6],输入一个正整数n,将其添加到a中后对a按元素的个位数字递减排序。输出n在排序中的最小位置索引(非负整数),n为无效数据则输出ERROR。

要求:

1、使用匿名函数完成排序。

2、函数和程序保存到:s10t2.py

3、程序执行效果:

输入1个正整数:22

位置索引=8

【参考与提示】

    可使用列表的内置函数sort直接对列表元素排序。该函数的key参数可设置排序的依据,可赋值为类名或函数名(包括匿名函数),表示列表的元素按key转换后的数据排序。注意:排序后列表的元素并没有转换为其他类型。


任务3 应用函数的嵌套

    定义函数funS10T3(a)。在该函数内定义函数isnumic(s),判断字符串是否为一个数值字符串。函数funS10T3利用isnumic函数从列表a中筛选出全部数值,并返回这些整数的平均值(四舍五入保留2位小数)。

    程序运行时输入1个数值序列,调用上面定义的函数输出它们的平均值。如果序列中没有数值则输出ERROR。

要求:

1、函数和程序保存到:s10t3.py

2、程序执行效果:

输入整数序列:8.3,7.6,ab,9,-6.5,cd,12

avg=6.08

【参考与提示】

1、在函数(称为外函数)内可以定义函数(称为内函数),称为函数的嵌套。

2、内函数只能被定义它的外函数调用。




    定义函数funS10T3(m,n)。在该函数内定义函数gcd(m,n),求m和n的最大公约数。funS10T3函数根据gcd(m,n)的函数值返回m和n的最小公倍数。

    程序运行时输入2个正整数,调用上面定义的函数输出它们的最小公倍数。无效输入则输出ERROR。

要求:

1、函数和程序保存到:s10t3.py

2、程序执行效果:

输入2个正整数:6,15

6和15的最小公倍数=30

【参考与提示】

1、在函数(称为外函数)内可以定义函数(称为内函数),称为函数的嵌套。

2、内函数只能被定义它的外函数调用。


任务4 应用函数递归

    编写递归函数funS10T4(n),计算正整数n的阶乘n!。

    程序运行时输入正整数n,输出n!。输入无效数据时输出ERROR。

要求:

1、函数和程序保存到:s10t4.py

2、程序执行效果:

输入一个正整数:10

10!=3628800

【参考与提示】

    在函数体内,可以直接或间接调用函数本身(称为递归调用)。该函数称为递归函数。




    已知f(0)=1,g(0)=2,f(n)=f(n-1)+g(n-1)*2,g(n)=2*f(n-1)+g(n-1)。

    程序运行时输入正整数n,输出g(n)的值。输入无效数据时输出ERROR。

要求:

1、定义函数funS10T4A(n)计算f(n);定义函数funS10T4B(n)计算g(n)。

2、函数和程序保存到:s10t4.py

3、程序执行效果:

输入一个正整数:10

g(10)=88574

【参考与提示】

    在函数体内,可以直接或间接调用函数本身(称为递归调用)。该函数称为递归函数。


任务5 函数综合应用

    请根据注释将以下代码中的<X>替换为适当的内容:

def funS10T5(<X>):

    #函数有2个参数:

    #第1个参数为m

    #第2个参数为k,必须按关键字传递,默认值为0

    def check(<X>):

        #函数有2个参数:第1个参数为n

        #第2个参数为c,默认值为8

        #全部参数必须按值传递

        <X> b #声明非局部变量

        <X> a #声明全局变量

        b+=1 if k else 2

        a=(a+c)*n

        return a-c

    b=1234

    return check(m,<X>)   #第2个参数传递值7

a=123

s=input("输入一个正整数:")

try:

    n=int(s)

    assert n>0

except:print("ERROR")

else:

    v=funS10T5(a,<X>)    #第2个参数传递值34

    print(funS10T5(n)+v)

要求:

1、函数和程序保存到:s10t5.py

2、程序执行效果:

输入一个正整数:23

输出:383907

【参考与提示】

1、在函数外定义的变量为全局变量。

2、函数内可直接读取全局变量的值。

3、函数内可以修改全局变量的值,但需先声明。

4、在嵌套函数中,内函数可以修改外函数的局部变量的值,但需先声明。

5、函数参数中,"/"表示之前的全部参数必须按值传递。"*"表示之后的全部参数必须按关键字传递。




    请根据注释将以下代码中的<X>替换为适当的内容:

def funS10T5(<X>):

    #函数共2个参数:

    #第1个参数为a,表示将按值传递的参数全部打包为元组

    #第2个参数为f,默认值为0

   <X> num   #声明全局变量

   num=len(a)

   if f:return sum(a)*f

   else:return sum(a)

num=0

s=input("输入正整数序列:")

a=[]

s=s.split(",")

for c in s:

   try:

       n=int(c)

       assert n>0

       a.append(n)

   except:<X>   #不作处理

#a的全部元素解包作第1个参数

#第2个参数传递值3:

n=funS10T5(<X>)

#a的全部元素解包作第1个参数,第2个参数不传递数据:

print(num,n,funS10T5(<X>))

要求:

1、函数和程序保存到:s10t5.py

2、程序执行效果:

输入正整数序列:2,r,4,t,5,3

输出:4 42 14

【参考与提示】

1、在函数外定义的变量为全局变量。

2、函数内可直接读取全局变量的值。

3、函数内可以修改全局变量的值,但需先声明。

4、函数参数中,"/"表示之前的全部参数必须按值传递。"*"表示之后的全部参数必须按关键字传递。