【无标题】

实验报告
第 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值