实验二
实验题目
1、请编写一个函数SDSearch(txt, word),其中,txt是一段文本,word是给定的词汇,函数SDSearch可以找到word在txt中的所有位置,并将它们做为返回值返回,编写函数main()调用SDSearch(txt, word),输出SDSearch(txt, word)返回结果。(提示:find(字符串,查找的起始位置))
【代码】
def SDSearch(txt, word):
positions = []
start = 0
while True:
index = txt.find(word, start)
if index == -1:
break
positions.append(index)
start = index + len(word)
return positions
def main():
txt = input(“请输入文本:”)
word = input(“请输入词汇:”)
result = SDSearch(txt, word)
if result:
print(f"‘{word}’ 在文本中的位置:{result}“)
else:
print(f"文本中没有找到 ‘{word}’”)
main()
【实例】
2、编写函数SDrepCount(txt, word, repword),其中,txt是一段文本,word是给定的将要被替换词汇,repword是给定替换的词汇,SDrepCount(txt, word, repword)可以用repword替换txt中出现的所有word,并返回替换的次数。编写函数main()调用SDrepCount(txt, word, repword),输出SDrepCount(txt, word, repword)返回结果。
【代码】
def SDrepCount(txt, word, repword):
count = 0
while txt.find(word) != -1:
txt = txt.replace(word, repword, 1)
count += 1
return count
def main():
txt = input(“请输入文本:”)
word = input(“请输入将要被替换的词汇:”)
repword = input(“请输入替换的词汇:”)
count = SDrepCount(txt, word, repword)
if count > 0:
replaced_txt = txt.replace(word, repword)
print(f"‘{word}’ 已被替换为 ‘{repword}’,替换次数:{count} 次")
print(“替换后的文本:”, replaced_txt)
else:
print(f"文本中没有找到 ‘{word}’")
main()
【实例】
3、请编写一个函数SDfindChinese(txt),其中,txt是一段文本,函数SDfindChinese可以从txt中找到所有中文,拼接成句子并将其返回。编写函数main()调用SDfindChinese(txt),输出SDfindChinese(txt)返回结果。
【代码】
import re
def SDfindChinese(txt):
pattern = re.compile(‘[\u4e00-\u9fa5]’)
chinese_chars = re.findall(pattern, txt)
chinese_sentence = ‘’.join(chinese_chars)
return chinese_sentence
def main():
txt = input(“请输入文本:”)
chinese_sentence = SDfindChinese(txt)
print(“中文句子:”, chinese_sentence)
main()
【实例】
4、请编写一个类SDWordTools,要求如下:
(1)建立该类的构造函数__init__(self, txt),其中txt为传入的文本
(2)建立该类的析构函数__del__(self),输出“感谢使用的字样”
(3)将实验报告题目1,2修改后,变为该类的成员函数
(4)设计一个函数Main(),在该函数中调用声明了SDWordTools的对象,并调用了它的所有方法
【代码】
import re
class SDWordTools:
def init(self, txt):
self.txt = txt
def del(self):
print(“感谢使用”)
def SDSearch(self, word):
positions = []
start = 0
while True:
index = self.txt.find(word, start)
if index == -1:
break
positions.append(index)
start = index + len(word)
return positions
def SDrepCount(self, word, repword):
count = 0
while self.txt.find(word) != -1:
self.txt = self.txt.replace(word, repword, 1)
count += 1
return count
def Main():
txt = input(“请输入文本:”)
tools = SDWordTools(txt)
word = input(“请输入要查找的词汇:”)
positions = tools.SDSearch(word)
if positions:
print(f"‘{word}’ 在文本中的位置:{positions}")
else:
print(f"文本中没有找到 ‘{word}’")
word = input(“请输入将要被替换的词汇:”)
repword = input(“请输入替换的词汇:”)
count = tools.SDrepCount(word, repword)
if count > 0:
replaced_txt = tools.txt
print(f"‘{word}’ 已被替换为 ‘{repword}’,替换次数:{count} 次")
print(“替换后的文本:”, replaced_txt)
else:
print(f"文本中没有找到 ‘{word}’")
Main()
【实例】
5、请编写一个类SDWordToolsEx,要求如下:
(1)该类继承于类SDWordTools,包含了SDWordTools所有功能
(2)将实验题目3所编写的函数加入到SDWordToolsEx
(3)设计一个函数Main(),在该函数中调用声明了SDWordToolsEx的对象,并调用了它的所有方法,包括从SDWordTools继承来的方法
【代码】
class SDWordToolsEx(SDWordTools):
def init(self, txt):
super().init(txt)
def SDrepCount(self, word, repword):
count = 0
while self.txt.find(word) != -1:
self.txt = self.txt.replace(word, repword, 1)
count += 1
return count
def SDfindChinese(self):
pattern = re.compile(‘[\u4e00-\u9fa5]’)
chinese_chars = re.findall(pattern, self.txt)
chinese_sentence = ‘’.join(chinese_chars)
return chinese_sentence
def Main():
txt = input(“请输入文本:”)
tools = SDWordToolsEx(txt)
word = input(“请输入要查找的词汇:”)
positions = tools.SDSearch(word)
if positions:
print(f"‘{word}’ 在文本中的位置:{positions}")
else:
print(f"文本中没有找到 ‘{word}’")
word = input(“请输入将要被替换的词汇:”)
repword = input(“请输入替换的词汇:”)
count = tools.SDrepCount(word, repword)
if count > 0:
replaced_txt = tools.txt
print(f"‘{word}’ 已被替换为 ‘{repword}’,替换次数:{count} 次")
print(“替换后的文本:”, replaced_txt)
else:
print(f"文本中没有找到 ‘{word}’")
chinese_sentence = tools.SDfindChinese()
print(“中文句子:”, chinese_sentence)
Main()
【实例】