内容正文:
专题8 算法程序实现的综合应用
2023
1.(2022·7月浙江学考)查找与替换。从键盘上分别输入要查找和替换的字符串,对文本文件进行查找与替换,替换后保存到新的文本文件中。
完成查找与替换功能的思路是:首先可从待检索文本文件“in.txt”逐行读取文本内容到列表text,然后从键盘上输入查找的字符串key和替换的字符串new,对列表text中的元素逐个进行查找并替换,结果保存到列表result,最后将result 写入文件“out. txt”。
(1)主程序。
text=readfile(”in.txt”) #读入文件
key=input(”请输入要查找的字符串:”)
new=input(”请输入要替换的字符串:”)
result=[]
for line in text:
newline=replace(key, new, line) #替换
result.append(newline) #添加到列表
writefile(”out.txt”,result) #写入文件
该程序段采用的算法是________(单选,填字母:A.解析算法
B.枚举算法)。
B
(2)读写文本文件,如下的readfile函数,逐行读取文本文件数据存入列表并返回。请在划线处填入合适的代码。
def readfile(filename):
f=open(filename,encoding=”utf-8”) #打开文件
text=[]
line=f.readline() #从文件中读取一行
while line:
text.append(line) #添加到列表
line=f.readline()
f.close()
return_________
def writefile(filename,text):
#将text写入filename文件,代码略
text
(3)查找字符串,如下的findstr函数,在字符串line中从begin位置开始查找key在字符串line中的位置,请在划线处填入合适的代码。
def findstr(key,line,begin):
for i in range(begin, len(line)-len(key)+1):
if:________________________________
return i
return -1
line[i:i+len(key)]==key
(4)替换字符串。如下的replace函数,在字符串line中检索所有的字符串key并替换为new,请在划线处填入合适的代码。
def replace(key,new,line):
begin=0
while begin <len(line)-len(key)+1:
pos=findstr(key,line,begin)
if pos==-1:
___________
else:
line=line[0:pos]+new+line [pos+len(key) :len(line)]
begin=pos+len(key)
return line
break
或 begin+=1
解析 (1)枚举算法指根据问题的本身性质,一一列举问题所有的情况并逐个进行判断,从中挑出符合条件的解。本题读取每一
行,并一一查找是否有待替换的字符串,如有进行替换并放入结果中,属于枚举算法。
(2)本处为程序输入,从文件中读取每一行后,将该行字符串添加到text列表中,因此最后返回的是text列表。
单击此处编辑母版文本样式
(3)该自定义函数功能为查找line字符串是否有key字符串,如有返回起点位置i,若没有则检查整个line字符串后返回-1。为查找key在字符串line中的位置,for循环从begin开始,每次循环从i下标位置截取len(key)长度的字符串与key字符串比较,若相等,则返回i下标,故答案:line[i:i+len(key)]==key。
(4)若查找函数的返回值pos为-1,则说明从这个当前位置出发查找整个line字符串