寻找

2013-02-25 32 views
0

我给存储在一个名为words_list列表的文本文件中的单词的所有元音数量:寻找

if __name__ = "__main__": 
    words_file = open('words.txt') 

    words_list = [] 
    for w in words_file: 
     w = w.strip().strip('\n') 
     words_list.append(w) 

这就是字符串列表样子(这是一个好长好长的名单字)

我必须找到“所有的单词”与所有的元音;到目前为止,我有:

def all_vowel(words_list): 
    count = 0 
    for w in words_list: 
     if all_five_vowels(w): # this function just returns true 
      count = count + 1 
    if count == 0 
     print '<None found>' 
    else 
     print count 

的问题,这是count 1次它看到一个元音每次增加,而我希望它加1 只有如果整个单词拥有所有的元音。

+0

.strip后'()','.strip( '\ n')'是多余的。 – 2013-02-25 17:50:12

回答

3

假设word_list变量是一个实际的列表,可能你的“all_five_vowels”函数是错误的。

这可能是一个另类的实现:

def all_five_vowels(word): 
    vowels = ['a','e','o','i','u'] 
    for letter in word: 
     if letter in vowels: 
      vowels.remove(letter) 
      if len(vowels) == 0: 
       return True 
    return False 
+0

你能否解释一下vowels.remove(letter)是如何工作的......在一个实例中,我有这样的词:aaah和alladin – LaffyTaffyKidd 2013-02-25 17:59:38

+0

在这种情况下,元音是一个列表。因此,vowels.remove(letter)的工作方式是,如果该字母在列表中,那么letter元素将从列表元音中移除。如果所有元音都出现在你的单词中,所有元音将从这个列表中删除,并给出列表长度为0. 如果输入'alladin',列表将导致['e','o','u '],长度大于0,返回False。 – Jesse 2013-02-25 18:03:15

+0

非常感谢!有效!!! – LaffyTaffyKidd 2013-02-25 18:07:45

5

简单的测试,如果你的任何话都是元音集的子集:

vowels = set('aeiou') 

with open('words.txt') as words_file: 
    for word in words_file: 
     word = word.strip() 
     if vowels.issubset(word): 
      print word 

set.issubset()任何序列(包括字符串)作品:

>>> set('aeiou').issubset('word') 
False 
>>> set('aeiou').issubset('education') 
True 
+1

我认为这将比其他解决方案在计算上更有效率 – 2013-02-25 18:09:28

0

@Martijn Peters已经发布了解决方案th这可能是Python中速度最快的解决方案。为了完整起见,这里是用Python解决这个另一种好办法:

vowels = set('aeiou') 

with open('words.txt') as words_file: 
    for word in words_file: 
     word = word.strip() 
     if all(ch in vowels for ch in word): 
      print word 

它使用内置的功能all()与发电机的表达,这是学习一个方便的模式。这读作“如果单词中的所有字符都是元音,则打印该单词”。 Python也有any()这可以用于检查,如“如果单词中的任何字符是元音,打印单词”。的any()all()这里

更多讨论:"exists" keyword in Python?