资源简介 (共34张PPT)2.4 可以复用的代码 (第1课时)学习内容一、编程解决复杂问题的思想与方法二、函数的定义与调用三、使用函数解决问题一、计算机解决问题的一般过程知识回顾二、算法的三种基本结构顺序结构分支结构循环结构小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。小挑战6, 2, 5, 5, 4, 5, 6, 3, 7, 6 根火柴棒有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。小挑战6, 2, 5, 5, 4, 5, 6, 3, 7, 6 根火柴棒6根火柴可以摆出最小的自然数是( 0 )?6根火柴可以摆出最大的自然数是( 111 )?有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。snum=6print("你可以拼出这些数字: ") for i in range(112):if== snum :print ( i )i 需要的火柴棒数range(0 , 112 , 1)0≤i<112小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。print ( i )小挑战细化问题:如何计算一个自然数需要的火柴棒总数?snum=6print("你可以拼出这些数字: ") for i in range(112):if== snum :i 需要的火柴棒数小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。细化问题:如何计算一个自然数需要的火柴棒总数?=例如:14需要多少根火柴棒?下标f = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ]1 4f [ 4 ] 4+f [ 1 ] 26求出每一位上(个位、十位......)的数所用的火柴棒数在相加。小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。细化问题:如何计算一个自然数需要的火柴棒总数?小挑战细化问题:如何计算一个自然数需要的火柴棒总数?num=int(input(“请输入一个数:“)) f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)# 输入一个自然数# 0-9的数字分别需要多少根小棒# 火柴棒总数变量赋初值# 取num的个位数# 所需火柴棒数累加# 去掉num的个位有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。细化问题:如何计算一个自然数需要的火柴棒总数?num=int(input(“请输入一个数:“))f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)测试数据:14,108,0小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。细化问题:如何计算一个自然数需要的火柴棒总数?num=int(input(“请输入一个数:“))f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)测试数据:14,108,0小挑战有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。细化问题:如何计算一个自然数需要的火柴棒总数?num=int(input(“请输入一个数:“)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)测试数据:0,50,100# 判断输入数字为0时的特殊情况有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。面对一些复杂的问题,可以采用自顶向下、逐步细化的方法编程解决复杂问题的思想与方法面对一些复杂的问题,可以采用自顶向下、逐步细化的方法有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。编写代码时,可以运用函数实现化繁为简、分而治之。if== snum :print ( i )i需要的火柴棒数snum=6print("你可以拼出这些数字: ") for i in range(112):num=int(input(“请输入一个数: “))f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)#求解一个自然数需要的火柴棒总数编程解决复杂问题的思想与方法函数函数可分为系统函数和用户自定义函数两种类型。系统函数即函数库中的标准函数。在前面单元使用过的print()和input()函数都是系统函数。自定义函数基本格式:def 函数名(参数): #函数说明语句或语句组(函数体)return 返回值参数是用来向函数传递值的,当有多个参数时, 各 个参数之间用逗号分隔开。函数执行完成后,由return语句将表达式值返回给调用者,结束函数。 函数的调用采用函数名(参数)的方式。数学运算类函数;数据转换类函数;字符串操作类函数;输人输出函数;文件操作类函数;其他类函数。函数的定义与调用print(total)#求解一个自然数需要的火柴棒总数定义函数函数名参数def match_num(num):num=int(input(“请输入一个数: “)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10return total返回值函数体案例分析:用自定义函数求n!def factorial(n): #自定义函数名为factorial,有一个参数为ns=1for i in range(2,n+1):s=s*ireturn s #函数返回值为 s#调用factorial函数total=factorial(4)print(total)print(total)#求解一个自然数需要的火柴棒总数def match_num(num):num=int(input(“请输入一个数: “)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10return total#主程序snum=6print("你可以拼出这些数字: ") for i in range(112):if match_num( i ) == snum : print ( i )函数的定义与调用三、调用函数通过函数名即可调用函数先声明、后调用参数传递要对应测试程序:练习:求解 1! + 2! + 3! + 4! ……+ 100!(可参照课本P42)运用函数解决问题调用函数自定义函数【运行结果】ü代码复用ü模块化设计一、面对一些复杂的问题,可以采用自顶向下、逐步细化的方法二、编写代码时,可以用函数实现化繁为简、分而治之三、运用函数解决问题,必须先定义再调用本课小结自定义函数主程序疑问一:程序遇到函数时执行过程是怎样的?有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。疑问二:定义函数和调用函数的参数有什么不同?定义函数match_num(num)中的num为形参调用函数match_num( i )中的 i 为实参多个参数时形参与实参的个数和顺序,必须保持一致,每个参数之间用逗号隔开。参数也可以没有,但括号不能省略。有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。【范例程序】def plus( a, b ):# 自定义函数求2个参数的和s = a + breturn s# 调用plus函数 total = plus( 10, 20 ) print (total)形参实参返回结果】?【运行结果 30有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。疑问二:定义函数和调用函数的参数有什么不同?定义函数match_num(num)中的num为形参调用函数match_num( i )中的 i 为实参退出函数return [参数] ,可以将结果返回给调用方。多个参数时,每个参数之间用逗号隔开。如果没有参数,则return语句返回None。疑问二:定义函数和调用函数的参数有什么不同?有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。求解 1! + 2! + 3! + 4! ……+ 100!(可参照课本P42)自定义函数主程序练习讲解求解 1! + 2! + 3! + 4! ……+ 100!(可参照课本P42)形参实参练习讲解求解 1! + 2! + 3! + 4! ……+ 100!(可参照课本P42)返回结果练习讲解求解 1! + 2! + 3! + 4! ……+ 100!(可参照课本P42)【运行结果】练习讲解 展开更多...... 收起↑ 资源预览