内容正文:
解析算法与枚举算法
课标梳理
教材重点 课标要求 学业质量水平
简单算法及
其程序实现 1.理解解析算法、枚举算法的思想,能用解析、枚举的方法来设计算法
2.用程序来实现解析算法、枚举算法以及其他简单的算法 2-1
算法程序实现
的综合应用 通过综合解决实际问题,编写实行性程序,培养编程解决问题的能力 2-2
教材研析
1
解析算法及其程序实现
1.基本思想
根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。
2.解题思路
问题的前提条件
要求的解
t=float(input('请输入时间:'))
v0=float(input('请输入初速度:'))
a=float(input('请输入加速度:'))
s=v0 t+a t 2/2
print('位移为',s,'米')
典例1 编写Python程序,实现如下功能:输入直角三角形2条直角边长,应用勾股定理求出斜边长并输出,程序代码如下。在划线处填上合适的代码。
a=float(input('请输入直角三角形直角\边a长:'))
b=float(input('请输入直角三角形直角\边b长:'))
print('斜边长为',________________________________)
(a * * 2+b * * 2) * * 0.5
2
枚举算法及其程序实现
1.基本思想
罗列出所有可能的解,不能遗漏,不能重复,并对每个可能的解进行判断,是正确的解采纳(输出、计数……),不是的抛弃。
2.语法结构
循环:罗列出所有可能的解
分支:判断是否是正确的解(循环体中通过if后的条件进行判断)
3.范例:输出所有个位上是1,同时又是7的倍数三位正整数,并将满足条件的数的个数输出(如图1所示)。
4.优化
(1)为了提高效率,要使罗列的解的范围尽可能小 需要判断的次数(循环次数)少。
(2)范例:如图2所示。
典例2 编写Python程序,实现如下功能:输出所有正的2位奇妙平方数(某数的平方与其逆序数的平方互为逆序数,则该数为奇妙平方数,例如122=144, 212=441,则12为奇妙平方数)。程序代码如下。在划线处填上合适的代码。
#自定义函数cp用于检测参数n1和n2是否互逆
def cp(n1,n2):
flag=False
n1=str(n1)
n2=str(n2)
if len(n1)==len(n2):
for i in range(len(n1)):
if ①________________________________:
flag=True
break
else:
②________________
return flag
#以下for循环遍历所有2位正整数
c=0
for i in range(10,100,1):
b=0
a=i
n1[i]!=n2[len(n1)-1-i]
flag=True
#以下while循环用于获取i当前遍历到的2位正整数的逆序数
while a>0:
b=b 10+a % 10
a=a//10
if ③____________________________________________ and i!=b:
print(str(i)+'的平方:'+str(i 2)+'<——>'+str(b)+'的平方:'+str(b**2))
c+=1
print('共有'+str(c)+'个2位奇妙平方数')
cp(i**2,b**2)==False(或者not cp(i**2,b**2))
解析 ①自定义函数cp用于判断参数n1和n2是否互逆,在两数位数一样的前提下,从n1中左起和n2中右起取的数对只要有1对不相等,就不为互逆,终止判断,若所有数对都相等,则n1和n2互逆。
②标志位flag初值为False代表开始判断前默认互逆,若n1和n2的数字个数不同,肯定不互逆,将标志位的值改为True。
③调用cp函数判断数i的平方和它逆序数b的平方是否互逆,如果函数返回结果为False,则代表二者的平方数互逆,若同时满足i和其逆序数b不相等,则可判定i为奇妙平方数。
典例3 (2022浙江7月学考)查找与替换。从键盘上分别输入要查找和替换的字符串,对文本文件进行查找与替换,替换后保存到新的文本文件中。
完成查找与替换功能的思路是:首先可从待检索文本文件“in.txt”逐行读取文本内容到列表text,然后从键盘上输入查找的字符串key和替换的字符串new,对列表text中的元素逐个进行查找并替换,结果保存到列表result,最后将result写入文件“out.txt”。
(1)主程序。
text=readfile(