(
课件网) 2.4 可以复用的代码 教育科学-出卷网- 高中信息技术必修1《数据与计算》第二章 编程计算 有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。思考:6根火柴棒能摆放的最大数是多少? 任务一: 用自定义函数实现火柴棒摆数字问题 数字 0 1 2 3 4 5 6 7 8 9 需要的 火柴棒 6 2 5 5 4 5 6 3 7 6 可以用6根火柴棒摆放的数字,分别是: 0 6 9 14 41 77 111 任务一: 用自定义函数实现火柴棒摆数字问题 分析问题: 分解这个数字中的每个位数上的数字 设计算法: 实现方法: 1、将这个数除以10求余(取模),求得个位数 2、将这个数除以10取整数 3、重复第1和第2步骤,直到这个数为0 如:123分解成1、2、3 运算 商 余数 123%10 3 123//10 12 12%10 2 12//10 1 1%10 1 1//10 0 开 始 结 束 i = 0 i < = 111 i 需要6根火柴棒 输出 i i = i + 1 Y N Y N 任务一: 用自定义函数实现火柴棒摆数字问题 数字 0 1 2 3 4 5 6 7 8 9 需要的 火柴棒 6 2 5 5 4 5 6 3 7 6 编写程序: list=[6,2,5,5,4,5,6,3,7,6] print("6根火柴棒可以摆出:",end=' ') for num in range(112): if num==0: s=list[0] else:否 num1=num s=0 while num1>0: i=num1%10 s=s+list[i] num1=num1//10 if s==6: print(num,end=' ') print() 开 始 结 束 i = 0 i < = 111 i 需要6根火柴棒 输出 i i = i + 1 Y N Y N 任务一: 用自定义函数实现火柴棒摆数字问题 函数:将一组语句用一个名字封装起来。 系统函数 函数库中的标准函数,是程序设计语言或操作系统提供给用户的一系列已经编好的程序。 print() input() int() float() 自定义函数 用户自己编写的一段程序。 基本格式 : def 函数名(参数): 语句或语句组 return 返回值 向函数传递值,多个参数之间用逗号隔开 将表达式的值返回给调用者 重复使用的代码 同变量命名规则 任务一: 用自定义函数实现火柴棒摆数字问题 函数调用: 函数名(参数) #调用factorial函数 total=factorial(4) print(total) 因此,这一行才是主程序的第一行,从这里开始执行。 def factorial(n): s=1 for i in range(2,n+1): s=s*i return s 因为出现def,所以跳过 任务一: 用自定义函数实现火柴棒摆数字问题 自定义函数: 编码实现:计算6根火柴棒能摆出的数字 snum=6 i=1 while i<=111: if macth_num(i)==snum: print(i) i=i+1 else: i=i+1 snum=6 for i in range(112): if macth_num(i)==snum: print(i) def macth_num(num): f=[6,2,5,5,4,5,6,3,7,6] total=0 if num==0: total=f[0] else: while num>0: x=num%10 total=total+f [x] num=num//10 return total 计算摆出一个数字需要的火柴棒数 while循环 for循环 课 堂 练 习 1.在 Python 语言中,创建自定义函数的语法规范是( )。 A.del 函数名(参数): B.def 函数名(参数): C.define 函数名(参数): D.sub 函数名(参数): 2.以下程序的输出正确的是( ) A.81 7 B. 4 4 C.12 7 D.hello def mypow(x,y=2): return x**y,x+y print(“hello”) a,b=mypow(3,4) print(a,b) B A 3.下列代码的输出结果是什么?( ) def sum(a,b): c=a+b return c print(sum(4,5)) A.4 B.5 C.9 D.1 C 课 堂 练 习 def factorial(n): #求n! s=1 for i in range(2,n+1): s=s*i return s #调用factorial函数 total=factorial(4) print(“4的阶乘:”total) def factorial(n): s=1 for i in range(2,n+1): s=s*i return s x=int(_____) total=0 for j in range(__,_____): print(i,"的阶乘是:", ) total=____ _____ print("1!+2!+3!+....+%d!=%d:"(x,total)) 计算1!+2!+3!+......+(x-1)!+x! (x由键盘输入) input(“请输入x:”) factorial(i ... ...