内容正文:
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=6
print("你可以拼出这些数字: ") for i in range(112):
if
== snum :
print ( i )
i 需要的火柴棒数
range(0 , 112 , 1)
0≤i<112
小挑战
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
print ( i )
小挑战
细化问题:如何计算一个自然数需要的火柴棒总数?
snum=6
print("你可以拼出这些数字: ") for i in range(112):
if
== snum :
i 需要的火柴棒数
小挑战
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
细化问题:如何计算一个自然数需要的火柴棒总数?
=
例如:14需要多少根火柴棒?
下标
f = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ]
1 4
f [ 4 ] 4
+
f [ 1 ] 2
6
求出每一位上(个位、十位......)的数所用的火柴棒数在相加。
小挑战
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
细化问题:如何计算一个自然数需要的火柴棒总数?
小挑战
细化问题:如何计算一个自然数需要的火柴棒总数?
num=int(input(“请输入一个数:“)) f=[6,2,5,5,4,5,6,3,7,6]
total=0
while (num>0):
x=num % 10 total=total+f[x] num=num//10
print(total)
# 输入一个自然数
# 0-9的数字分别需要多少根小棒
# 火柴棒总数变量赋初值
# 取num的个位数
# 所需火柴棒数累加
# 去掉num的个位
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
小挑战
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
细化问题:如何计算一个自然数需要的火柴棒总数?
num=int(input(“请输入一个数:“))
f=[6,2,5,5,4,5,6,3,7,6]
total=0
while (num>0):
x=num % 10 total=total+f[x] num=num//10
print(total)
测试数据:14,108,0
小挑战
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
细化问题:如何计算一个自然数需要的火柴棒总数?
num=int(input(“请输入一个数:“))
f=[6,2,5,5,4,5,6,3,7,6]
total=0
while (num>0):
x=num % 10 total=total+f[x] num=num//10
print(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//10
print(total)
测试数据:0,50,100
# 判断输入数字为0时的特殊情况
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
面对一些复杂的问题,可以采用自顶向下、逐步细化的方法
编程解决复杂问题的思想与方法
面对一些复杂的问题,可以采用自顶向下、逐步细化的方法
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
编写代码时,可以运用函数实现化繁为简、分而治之。
if
== snum :
print ( i )
i需要的火柴棒数
snum=6
print("你可以拼