尋找

2013-02-25 60 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?