内容正文:
python
可以复用的代码
2.4
王娟 高二四班
1
项目导入
活动1 用自定义函数实现火柴棒摆数字问题
有6根火柴棒, 列出所有能摆出的自然数, 要求火柴棒正好用完。
思考,利用6根火柴棒能够列出的最大数字是多少呢?
6根
2根
5根
5根
4根
5根
6根
3根
7根
6根
穷举法(一个一个去判断)
~
2
火柴棒摆数字问题
算法分析
1.数字“1”需要的火柴棒最少,所以能摆出的自然数最大是111
2.计算0和111之间的所有数字,统计需要的火柴棒
3.只要是恰好需要6根火柴棒的直接输出。
算法流程图描述
如何计算?103需要几根?
把每个数位上的数字所需要的火柴棒数加起来。
3
火柴棒摆数字问题
将其转化成流程图画在图2.4.3中
4
火柴棒摆数字问题
如何让计算机找出这个数字中的所有个位数呢?
(1)想一想,如果我们想得到“103”的个位上的“3”,哪种运算可以实现?除、整除还是取模?
103%10=3
(2)想一想,如何得到“103”的十位上的“0”,哪种运算可以实现?除、整除还是取模?
(3)想一想,如何得到“103”的百位上的“1”,哪种运算可以实现?除、整除还是取模?
103//10=10
10//10=1
10%10=0
x = num % 10
num = num // 10
num = 103
x = num % 10
num = num // 10
x = num % 10
1%10=1
f = [6,2,5,5,4,5,6,3,7,6]
total = f[x]
total = total+f[x]
total = total+f[x]
5
火柴棒摆数字问题
实现方法:
1.将这个数除以10求余(取模),求得个位数;
2.将这个数除以10取整数
3.重复第1和第2步骤,直到这个数为0
编写代码:
num = int(input(“请输入0-111之间的任意数字”))
(x
x = num % 10
f = [6,2,5,5,4,5,6,3,7,6]
total = total+f[x]
num = num // 10
6
火柴棒摆数字问题
x=num%10
total=total+f[x]
输出total
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//10
print(total)
7
用自定义函数实现火柴棒摆数字问题
6
sum = 6
i = 0
while(i<=111):
if(Match_num(i)==sum):
print(i)
i = i + 1
else:
i=i+1
8
函数
用户自定义函数
函数库中的标准函数,是Python提供给用户的一系列已经编好的程序。如:
用户根据需要编写的一段程序
系统函数
把某个功能的代码封装到一个代码块中,用来为某个重复使用的功能做调用的一个代码块。
函数类型:
def 函数名(参数):
#函数说明
语句或语句组
return 返回值
参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号隔开。
函数执行完后,由return语句将表达式值返回给调用者,结束函数
例如:def 函数名(参数1,参数2……):
定义函数的基本格式:
9
函数定义与调用
函数的调用:指函数定义以后,在代码的其他地方使用函数的动作
函数的调用形式是函数名(参数)
这个函数用来求n!
在遇到函数的调用语旬factorial(4)时, 转到函数中的第一行代码开始执行。
函数运行时,变量n会被赋值为4。
函数执行完成返回变量s的值即24,
然后回到语句total = factorial(4),
将返回值赋给变量 total, 最后输出。
10
巩固练习
下列代码的输出结果是 ?
def sum(a,b):
c=a+b
return c
print(sum(4,5))
9
11
用自定义函数实现火柴棒摆数字问题
def Match_num(num):
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//10