3

文字が母音である限り、文字列に文字のコピーを追加する方法を見つけようとしています。たとえば、copy('app') という単語を入力すると、理想的には 'aaaapp!' が返されます。文字列が不変であることは知っていますが、方法が必要です! 私は何時間もこれを見つめてきました。

注:コードの解決策は必要ありません。できれば正しい方向に導くためのヒントが欲しいだけです。編集:すべての助けをありがとう!

私のアイデアの 1 つは次のとおりでした: word += word + i*4 しかし、それは 'appaaaa!' のようなものを返します。

def copy(word):
     "('string') ==> ('string') Adds four copies of vowel and an '!' to the string"
     vowel = 'aeiouAEIOU'
     for i in word:
          if i in vowel:
                #Missing code Here
     return word + '!'
4

4 に答える 4

5

あなたはre.subかなり簡単に使うことができます:

>>> re.sub('([aeiouAEIOU])',r'\1\1\1\1','string')
'striiiing'

または、置換の数を可変にしたい場合:

>>> N=4
>>> re.sub('([aeiouAEIOU])',r'\1'*N,'string')
'striiiing'
于 2013-02-24T18:57:35.693 に答える
3

重要なのは、新しい文字列を作成することです。文字が母音でない場合は、それを新しい文字列にコピーするだけです。母音の場合は、その4 つのコピーを新しい文字列にコピーします。次に、新しい文字列を返します。これを行う1つの方法は次のとおりです。

def copy(word):
    vowels = set ("AEIOUaeiou")
    return "".join(char * 4 if char in vowels else char for char in word) + "!"
于 2013-02-24T19:00:46.587 に答える
2

入力をスキャンしながら別の文字列を作成します。

s = ''
for i in word:
  if i in vowel:
     s += i*4
  else:
     s += i
s += '!'
于 2013-02-24T18:57:52.763 に答える
0

文字列の各文字をリストにコピーし、自由に母音を挿入してから、リストを結合して文字列に戻すことができます: ''.join(mylist))

于 2013-02-24T18:59:14.557 に答える