我需要编写一个程序,要求输入一个字母和输入。我需要找到包含该特定字母的单词的数量,并列出这些单词。到目前为止,我已经能够列出包含该特定字母的单词,但是我找不到包含该特定字母的单词数量。
到目前为止,我的代码是:
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'。
所以,我可以帮助解决问题。
感谢。
答案 0 :(得分:4)
a ="ee eeeee the"
print sum("e" in x for x in a.split())
3
拆分单词并检查每个单词中是否e
并使用sum来获得总数。
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
答案 1 :(得分: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
答案 2 :(得分:1)
你非常接近,除了你应该计算你在最后一行创建的列表中的元素数量。这应该工作:
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))
答案 3 :(得分:0)
found = [word for word in words if a in word]
num = len(found)
print num
print ' '.join(found)
答案 4 :(得分:0)
更改
c=b.count(a)
喜欢的东西
c = sum(a in word for word in b.split())