实验报告
第 1 页
课程 python程序设计 实验名称 实验3
一、实验目的
熟练使用python语言
二、实验环境
Pycharm,Windows10
实验目的:熟练掌握字符串的各种方法。
1、编写程序,把一个英文句子中的单词倒置,标点符号不倒置(例如:I like beijing. 经过函数后变为:beijing. like I)
list_number = list(input().split(' ')) #由于reverse无法对字符串进行操作,故对输入字符串以空格为单位分割,然后转为列表
list_number.reverse()
print(" ".join(list_number)) #以" "为单位对列表中的单词进行组合为字符串
2、编写程序,查找一个字符串中最长的数字子串。
import re
def find(s):
max = 0
count = 0
end = 0
if bool(re.search(r'\d', s))==False:
print('No')
else:
for i in range(len(s)):
if (s[i] >= '0' and s[i] <= '9'):
count += 1
if (max < count):
max = count
end = i
else:
count = 0
print(s[end - max + 1:end + 1])
s = str(input())
find(s)
3、判断待测单词与候选单词列表中的哪一个单词最接近:判断标准为26个字母在单词中的出现频次最接近。
from difflib import SequenceMatcher
from collections import Counter
print("==========第一次测试================")
#候选单词
words = {'good', 'hello', 'world', 'python','fuguo', 'yantai', 'shandong', 'great'}
#每个单词中字母频次
words = {word: dict(Counter(word)) for word in words}
def checkAndModify(word):
# 待检测单词的字母频次
fre = dict(Counter(word))
# 待测单词中各字母频次与所有候选单词的距离,即字母频次之差
similars = {w: [fre[ch]-words[w].get(ch, 0) for ch in word] + [words[w][ch]-fre.get(ch, 0) for ch in w] for w in words}
# 返回最接近的单词,即字母频次之差的平方和最小的单词
return min(similars.items(), key=lambda item: sum(map(lambda i: i**2, item[1])))[0]
测试
for word in ['god', 'hood', 'weloo', 'heloo', 'wello', 'helo', 'pychon', 'guguo', 'shangdong']:
print(word, ':', checkAndModify(word))
print("==========第二次测试================")
def similarity(a, b):
return SequenceMatcher(None, a, b).ratio()
def checkAndModify2(test):
similars = {word: similarity(word,test) for word in words}
return max(similars, key=similars.get)
测试
for word in ['god', 'hood', 'weloo', 'heloo', 'wello', 'helo', 'pychon', 'guguo', 'shangdong']:
print(word, ':', checkAndModify2(word))
4、给定任意字符串,查找其中每个字符的最后一次出现,并按每个字符最后一次出现的先后顺序依次存入列表。例如对于字符串’abcda’的处理结果为[‘b’, ‘c’, ‘d’, ‘a’],而字符串’abcbda’的处理结果为[‘c’, ‘b’, ‘d’, ‘a’]。
a = str(input())
b = []
for i in a:
b.append((a.rfind(i),i))
b = sorted(b)
c = []
for i in b:
if i[1] in c:
continue
c.append(i[1])
print(c)