求住以下python 实现代码
菜鸟求助大神以下python 实现代码啊。。。从一个英文短句中找出字符最多的那个单词 本帖最后由 青出于蓝 于 2021-7-16 14:14 编辑
c=input("句子:") #接受你的英语字符串
f=c.split(" ") #将字符串分割
c=0#c原始化为0,后面将用c存贮最长的字符串的字母个数
for i in f:
if len(i)>c:
c=len(i)#将比原始长的字符串的个数存贮到c
strr=i#把比原始长的单词命名为strr
print(strr)
遇到问题要多思考
上边代码最重要的是split函数,将字符串分割 青出于蓝 发表于 2021-7-15 22:07
遇到问题要多思考
大神能标注下注释吗。。。 本帖最后由 Ⅲ只小猪 于 2021-7-15 22:34 编辑
weiyideid823 发表于 2021-7-15 22:09
大神能标注下注释吗。。。
c=input("句子:") # 接受你的英文短句
f=c.split(" ") # 因为每个英文单词用空格来分割,所以这里用" "空格字符串来分割这个句子,然后传入f列表中,这样的话列表中的每个元素都是一个英文单词
ee=[]
c=0
for i in f: # 遍历f列表中的每个单词
if len(i)>c: # len(i)表示计算每个单词的长度,如果单词长度大于c的话,就运行下面的代码
c=len(i) # 把单词的长度赋给c
strr=i # 把最长的单词赋给strr,注意,因为使用了if len(i)>c和c=len(i),所以如果下一个单词的长度大于上一个单词的长度的话,每次循环后if len(i)>c中的c会被赋予新的值,而且这个值是越来越大的,
else:
continue # 而且这个值是越来越大的,因为如果单词长度小于c的话,是不会执行if下面的代码的,所以最后返回的是最长的英文单词。我现在加上一个else可能会比较好理解
print(strr) Ⅲ只小猪 发表于 2021-7-15 22:23
感觉有点耍流氓{:10_250:} Ⅲ只小猪 发表于 2021-7-15 22:23
print(strr)
我运行了以下,打印出来的是最开始的句子呀 weiyideid823 发表于 2021-7-15 23:15
我运行了以下,打印出来的是最开始的句子呀
怎么会?
Ⅲ只小猪 发表于 2021-7-15 22:30
感觉有点耍流氓
{:10_250:} weiyideid823 发表于 2021-7-15 23:15
我运行了以下,打印出来的是最开始的句子呀
方便截个图吗...
import collections
content = input(':')
a = []
for i in content:
a.append(i)
d = collections.Counter(a)
这种解决方法一般网上也有
利用其他函数
# 瞬间出结果
for k in d:
print(k,d)
# k是lst中的每个元素
# d是k在lst中出现的次数
如果要靠学过的知识就看那个人说的就好了{:10_277:} 本帖最后由 3236654291 于 2021-7-16 08:32 编辑
啊,看错了
你要求的是单词
我看成了字母
{:10_247:}
没事你们继续忙
参考代码:
# 你的字符串
string = 'I Love FishC! I Love Python! I Love Window!'
# 将字符串进行切割,分隔出单词后有些单词末尾会有字符,在用字符串方法切割掉最后一个字符
# 用 set 将单词合并同样的单词,转会 list 用于下面的排序
words = list(set( for i in string.split()]))
# 这里 sort 按照单词长度排序,且由长到短
words.sort(key=lambda x:len(x), reverse=True)
# for 循环打印 filter 筛选字符串长度都和 第一个字符串长度相同的字符,均为最长单词
for i in filter(lambda x:len(x) == len(words), words):
print(i, end=' ') weiyideid823 发表于 2021-7-15 23:15
我运行了以下,打印出来的是最开始的句子呀
没有错啊, 是最长的单词,
PS: 这个程序要排除一下标点符号
import re
RE_WORD = '\w+'
def DealFile(filename):
# 读取文件信息
with open(filename) as f:
data = f.readlines()
# 单词出现次数统计字典{'word':次数}
word_dict = {}
# 处理每一行字符串
for line in data:
# 正则表达式获取一行中所有单词
words = re.findall(RE_WORD, line)
# 将单词加入到统计字典中
for w in words:
# 除空格
w = w.strip()
# 出现次数+1
word_dict = word_dict.get(w,0) + 1
# 按单词次数排序, [(word, count),...]
word_count_list = sorted(word_dict.items(), key=lambda x: x, reverse=True)
# 打印次数最多的单词
maxVal = word_count_list
for w, count in word_count_list:
if count == maxVal:
print(w)
else:
break
DealFile('test.txt') 如果有多个单词是一样长且都是句子中最长的单词呢?是全部输出?还是输出最后一个?或者是第一个? hrp 发表于 2021-7-16 10:36
如果有多个单词是一样长且都是句子中最长的单词呢?是全部输出?还是输出最后一个?或者是第一个?
我理解的应该是全部输出 这解法越来越离谱了{:10_245:} 最讨厌这种不劳而获的。你一个代码不写,有些人太善良了,你遇到问题请教一下没什么,但是什么都没有就很可恶了。你这样能学到什么呢?如果你没学过就不要做题!先学会。 # 找出一句话中最长的单词
def longest_word(sentence: str) -> str:
word_list = sentence.split()
m = ''
for w in word_list:
if len(w) > len(m):
m = w
return m
页:
[1]
2