在Python中计算字符串中的单词数量

1 投票
5 回答
2161 浏览
提问于 2025-04-18 18:03

我需要写一个程序,让用户输入一个字母和一些内容。我的目标是找出包含这个特定字母的单词数量,并列出这些单词。目前我已经能够列出包含这个字母的单词,但我还不能找到包含这个字母的单词数量。

到目前为止,我的代码是:

a = input("Letter: ")  
b = input("Input: ")  
a=a.lower() 
b=b.lower()  
c=b.count(a)
print(c)  
words = b.split()  
print(' '.join([word for word in words if a in word]))

而输出结果是:

Letter: e 
Input: ee eeeee the 
8 
ee eeeee the

不过,正确的答案应该是3,而不是8,因为只有3个单词包含字母'e'。

所以,我能得到一些帮助来解决我的问题吗?

谢谢。

5 个回答

0

把这行代码 c=b.count(a) 改成类似这样的 c = sum(a in word for word in b.split())

简单来说,第一行代码是用来计算在字符串b中,字母或单词a出现的次数。而第二行代码则是通过先把字符串b分割成一个个单词,然后检查每个单词里是否有a,最后把所有的结果加起来,得到a出现的总次数。

0

在编程中,有时候我们会遇到一些问题,想要找到解决办法。StackOverflow是一个很棒的地方,大家可以在这里提问和回答问题。比如,有人可能会问:“我在写代码的时候遇到了错误,应该怎么解决?”其他人就会分享他们的经验和解决方案。

在这个过程中,大家会用一些代码示例来说明问题和解决方法。比如,可能会有一些代码块,像这样:

found = [word for word in words if a in word]
num = len(found)

print num
print ' '.join(found)
。这些代码块就是用来展示具体的代码,帮助理解问题所在。

总之,StackOverflow是一个学习和交流的好地方,适合所有想要提高编程技能的人。

1

你现在写的代码是统计字母 e 出现的次数。其实你只需要检查这个单词里有没有这个字母,然后再继续检查下一个单词就可以了。

>>> a = 'a'
>>> s = 'aaa bbb ccc ddd eaa faa abc'

>>> words = s.split()
>>> words
['aaa', 'bbb', 'ccc', 'ddd', 'eaa', 'faa', 'abc']

>>> len(filter(lambda i : a in i, words))
4

作为一个函数

def wordCounter(letter, sentence):
    wordList = sentence.split()
    return len(filter(lambda word : letter in word, wordList))

测试这个函数

>>> wordCounter(a, s)
4

>>> wordCounter('e', 'ee eeeee the')
3
4
a ="ee eeeee the"

print sum("e" in x for x in a.split())
3

把单词分开,然后检查每个单词里是否有字母 e,最后用加法算出总数。

b.count(a) 是在计算字母出现的次数。

In [1]: a ="ee eeeee the"

In [2]: a.split()
Out[2]: ['ee', 'eeeee', 'the'] # splits into individual words
In [3]: sum("e" in x for x in a.split()) # e is in all three words so sum returns 3
Out[3]: 3

你也可以修改你的代码,使用 len()

final_words = [word for word in words if a in word]
c = len(final_words)
print c
final  = (' '.join(final_words))
print final
2

你做得差不多了,不过在最后一行你应该计算一下你创建的列表里有多少个元素。可以试试这样做:

a = input("Letter: ")  
b = input("Input: ")  
a=a.lower() 
b=b.lower()  
words = [word for word in b.split() if a in word]  
print(len(words))
print(' '.join(words))

撰写回答