2017-07-03 11 views
0

私のプログラムでは、基本的にユーザーが選択した単語を入力することができます。その後、選択した母音を削除するオプションを与えます。それはこのように書き各インデックスを書き込まずにリストのすべての要素にアクセスするにはどうすればよいですか? (PYTHONの母音除去プログラム)

:あなたは不思議に思った場合は

v = ['A', 'E','I','O','U','AE', 'EA', 'AI', 'IA', 'AO','OA', 'AU','UA', 
    'EI','IE','EO','OE','EU','UE','IO','OI', 'IU','UI', 'OU','UO', 
    'AEI','AEU', 'EIO','EIU','IOU', 'AEIO','AEIU','EIOU', 
    'AEIOU' 
] 

keepOrDeleteVowel1 = input("Would you like to delete some vowels? Type 'yes' to choose which vowels you would like to delete, or 'no' to type a new word.").upper() 

if keepOrDeleteVowel1.upper() == "YES": 
          initial_word = input("Please type the word again: ") 
          vowel = input("Type the vowels you want to remove. Tip: If your word begins or ends with a vowel, try not to delete the vowel because the word might not be recognizable.") 
          if type(vowel) is str: 
           if len(vowel) <=5 and vowel == v[0-24]: 
            initial_word = initial_word.replace(vowel.lower(), '') 
            initial_word = initial_word.replace(vowel.upper(), '') 
           else: 
            print('Wrong input.') 
          print("This is your word: " + initial_word + "." + " Enjoy your new license plate! Thank you for using this app.") 

彼は彼が彼の言葉から削除したい母音どの選択すると、一番上のセクションには、ユーザーのすべての可能な入力のリストです。

これをキャッチすると、がトップリストのすべての要素であるvにアクセスしようとしています。それをどうやって変えるべきですか?

基本的に、ユーザーがトップリストの要素、たとえば 'IU'を入力すると、彼は元の単語からIとUを削除します。

基本的に、そのif文の論理:ユーザの応答の長さは5以下であり、ユーザの入力は、リストvの任意の要素と一致する場合

if len(vowel) <=5 and vowel == v[0-24]: 

である....母音を削除する...あなたはポイントを取得します。

私は文が間違っている場合は知っていますので、どうすれば変更できますか?

+0

5 + 5 * 4 + 5 * 4 * 3 + 5 * 4 * 3 * 2 + 5 * 4 * 3 * 2 * 1 = 325があります。 1から5の母音で、繰り返しはありません。 –

答えて

1

vowel == v[0-24]vowel.upper() in vに置き換えます。

+0

これでは十分ではありません。「AEI」と入力すると、残りのコードはそれぞれの文字ではなく、元の単語から 'AEI'文字列全体を置換しようとします。さらに、多くの可能な有効なエントリがリストから「IOA」として欠落しています。このような状況では、「set」を使用する方法があります。 –

0

文字セットが別の文字セットに含まれているかどうかをテストします。だから、完璧なものはsetです(the documentation in Python built-in types参照)。

文字列から許可された母音のセットを作成します。それはセット{'U', 'O', 'I', 'A', 'E'}となります(セットは注文されません)。

その後、我々はあなたが入力した母音のセットを作成します(大文字に変換)、そしてこのセットに含め(または等しい)最初のものされている場合<=演算子で、チェック:

>>> set('AUE') <= set('AEIOU') 
True 
>>> set('ARIO')<= set('AEIOU') 
False 

次に、入力した母音を繰り返して、最初の単語の各母音(大文字と小文字)を置き換えます。追記として

all_vowels = set('AEIOU') 
# {'U', 'O', 'I', 'A', 'E'} 
keepOrDeleteVowel1 = input("Would you like to delete some vowels?" 
          " Type 'yes' to choose which vowels you would like to delete," 
          " or 'no' to type a new word.").upper() 

if keepOrDeleteVowel1.upper() == "YES": 
    initial_word = input("Please type the word again: ") 
    vowels = input("Type the vowels you want to remove." 
        " Tip: If your word begins or ends with a vowel," 
        " try not to delete the vowel because the word" 
        " might not be recognizable.").upper() 
    if set(vowels) <= all_vowels: 
     for vowel in vowels: 
      initial_word = initial_word.replace(vowel.lower(), '') 
      initial_word = initial_word.replace(vowel.upper(), '') 
     print(initial_word) 
    else: 
     print('Wrong input.') 

:あなたのコード内の文字列は非常に長くあったように、私はPythonの自動連結を使用してそれらをカット:お互いに次の文字列を単純に連結されます。

関連する問題