3

我试图弄清楚如何在字符串中添加字符的副本,只要该字符是元音。例如,如果我输入单词 copy('app'),理想情况下它会返回 'aaaapp!'。我知道字符串是不可变的,但必须有办法!我已经盯着这个看了好几个小时了。

注意:我不想要我的代码的解决方案,最好只是提示让我朝着正确的方向前进。编辑:感谢所有帮助!

我的一个想法是: 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

关键是创建一个新字符串。如果字符不是元音,则只需将其复制到新字符串中。如果它是元音,则将它的四个副本复制到新字符串中。然后你返回新的字符串。这是一种方法:

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 回答