在Python中计算字符串中的单词数量
我需要写一个程序,让用户输入一个字母和一些内容。我的目标是找出包含这个特定字母的单词数量,并列出这些单词。目前我已经能够列出包含这个字母的单词,但我还不能找到包含这个字母的单词数量。
到目前为止,我的代码是:
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))