2017-11-16 7 views
0

現在、私は非常にPythonプログラミングには新しく、しばらくの間作業していました。私は、すべての母音をそのように取るプログラムを作るという小さなプロジェクトタスクに出くわしました。私はそれを試してみることにしました。私はプログラムを考え出しましたが、それは母音だけを取り出しているようです時々、私はこれが非常に奇妙であることを知り、それを解決するための援助をしたいと思います。いつ機能を分割する

def anti_vowel(text): 
    list = ['a', 'e', 'i', 'o', 'u'] 
    big_list = ['A', 'E', 'I', 'O', 'U'] 
    list_word = [] 

    for f in text: 
     list_word.append(f) 

    for vowel in list: 
     for letter in list_word: 
     if vowel == letter: 
      list_word.remove(vowel)  

    for vowel in big_list: 
     for letter in list_word: 
     if vowel == letter: 
      list_word.remove(vowel) 


    new_word = ''.join(list_word) 
    return new_word 




print anti_vowel("uuuUUUUUIIIIiiiIiIoOuuooouuUOUUuooouU") 

この文は、それがIiIuUUuoouU」をプリントアウト座っているように、私は文のためのより多くを使用してリスト上でより多くの反復を追加する場合には、示された文字の量を減少させます。誰かがなぜこのようなことがあるか教えてもらえますか?

+0

あなたは反復リストを何度も繰り返していますが、その必要はありません。 –

+0

まず 'list'はPythonの組み込み型です。 'list'の変数名を別の名前に変更してください – stacksonstacks

+1

あなたはその内容をループしている間にリストを修正しています。それをしないでください。 –

答えて

0

少し改善:

list = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] 

def anti_vowel(text): 
    return ''.join([x for x in text if x not in list]) 

print anti_vowel("uuuUUUUUIIIIiiiIiIoOuuooouuUOUUuooouU") 
0

このコードは正しい実装である

def anti_vowel(c): 
    newstr = c 
    vowels = ('a', 'e', 'i', 'o', 'u') 
    for x in c.lower(): 
     if x in vowels: 
      newstr = newstr.replace(x,"") 

    return newstr 
+1

'newstr = c'はcの新しいコピーを_not_作成しません。 –

+0

また、 '( 'a'、 'e'、 'i'、 'o'、 'u')'は、この場合 'aeiou'と同じパフォーマンスでもありません。 –

0

それが正しい作る少し編集して異常終了のソリューション

vowels = ['a','e','i','o','u','A','E','I','O','U'] 

def no_vowels(str1): 
    return ''.join([char for char in list(str1) if char not in vowels]) 

print no_vowels('finished') 

を与えます
関連する問題