(
课件网) 可以复用的代码 (函数和模块) 函数 系统函数 用户自定义函数 例: 函数名遵循变量名规则 有无参数都要加小括号 冒号结尾做生面执行命令 自定义函数的关键词 有无返回值跟函数有关 自定义函数内容函数体 def 函数名(参数) #函数说明 语名或语句组 return 返回值 def add(x,y): z=x+y return z 例: 自定义函数 调用自定义函数 a=add(3,4) print(a) print(add(3,4)) 1 2 求以下多边形的面积(自定义函数的应用) 题: 海伦公式: a,b,c为三角形的边长,p为半周长,即p=(a+b+c)/2 三角形面积公式 分析问题 设计算法 循环控制条件 循环体 false true 循环结束后的语句 输入多边每个三角形的边长 开始 结束 a b c g d e f 编写代码 import math def s(a,b,c): #求三角形的面积 p=(a+b+c)/2 mj=math.sqrt(p*(p-a)*(p-b)*(p-c)) #开平方根(函数) return mj #以下为主程序 a,b,c,d,e,f,g=3,2,3,4,3,4,5 print(s(a,e,f)+s(b,f,g)+s(g,c,d)) 调试运行 书本实例 题: 六根火柴棒可以排出的最大数字 分析问题 设计算法 i<=111 i=i+1 否 是 i=0 开始 结束 i需要火柴棒6根 输出i 是 否 索引 0 1 2 3 4 5 6 7 8 9 元素 6 2 5 5 4 5 6 3 7 6 列表:match=[6,2,5,5,4,5,6,3,7,6] 列表中的顺序 每个数字需要的火柴棒 1.列出5个用6根火柴棒摆出的数字,分别是0,6,9,14,77,111 2.要摆出多位数字怎么实现? 1.数字“1”需要的火柴棒最少,所以能摆出的自然数最大是111 2.计算0和111之间的所有数字,统计需要的火柴棒 3.只要是恰好需要6根火柴棒的直接输出。 将这个数的每个数位上的数字所需要的火柴棒数加起来。实现方法是将这个数除以10取余,求得个位数;然后将这个个位数需要的火柴棒数累加;接着将这个数除以10取整,去掉个位数;重复以上步骤直到这个数为0。 去掉num的个位数 否 求num的个位数 num>0 是 求个位数需要火柴棒数 火柴棒数累加 def match_num(num): list=[6,2,5,5,4,5,6,3,7,6] s=0 while(num>0): i=num%10 s=s+list[i] num=num//10 print(s) i=num%10 否 是 list=[6,2,5,5,4,5,6,3,7,6] 自定义函数 结束 num>0 输出s 是 s=0 s=s+list[i] num=num//10 def match_num(num): f=[6,2,5,5,4,5,6,3,7,6] # 0-9的数字分别需要多少根小棒 if num==0: # 火柴棒总数变量赋初值 total=f[0] else: total=0 while (num>0): x=num % 10 # 取num除以10的余数,即num的个位数 total=total+f[x] # 所需火柴棒数累加 num=num//10 #num整除10,即去掉num的个位数 return total #返回需要多少根火柴棒数 #以下为主程序 snum=6 # 6根火柴棒 print("你可以拼出这些数字:") for i in range(112): if match_num(i)==snum: #如果i需要的火柴棒数等于现有火柴棒数 print (i) input("运行完毕,请按回车键退出...")