在问这个问题之前,我已经检查过我的问题是否有解决方案。
我正在做python。我正在尝试编写一个带有输入字符串的代码,并且该字符串中的每个字母都是元音(aeiou
),将该元音替换为自身4次。然后在末尾添加一个感叹号(!
)。例如:
apple
看起来像aaaappleeee!
。
我已多次尝试使此工作无效。想知道你们是否可以查看我的代码,看看我做错了什么。拥抱和亲吻。克里斯托弗
def exclamation (string):
for i in range(0,len(string)):
if string[i] in 'aeiou':
string.replace(string[i],string[i*4])
print(string + '!')
答案 0 :(得分:0)
您可以使用正则表达式:
def exclamation(string):
newString = re.sub(r'([aeiou])', r'\1\1\1\1', string)
return newString + '!'
答案 1 :(得分:0)
字符串是不可变的,因此替换字符串每次都会返回一个新字符串。相反,只需像你一样构建一个字符串:
def exclamation (string):
buildString = ""
for i in range(0,len(string)):
if string[i] in 'aeiou':
buildString = buildString +string[i]*4
else:
buildString = buildString +string[i]
print buildString+"!"
答案 2 :(得分:0)
def exclamation(string):
new_string = ''
for c in string:
if c in 'aeiou':
new_string += c * 4
else:
new_string += c
new_string += '!'
return new_string
答案 3 :(得分:0)
replace
不修改现有字符串,它返回。在迭代它时,还有一件事情永远不会修改列表,字符串或字典。使用string
作为变量名称是不好的做法。
def exclamation(my_string):
new=''
for i in range(0,len(my_string)):
if my_string[i] in 'aeiou':
new += my_string[i]*4
else: new += my_string[i]
print(new + '!')
输出:
>>> exclamation('abcdef')
aaaabcdeeeef!
使用lambda
和map
:
>>> def exclamation(my_string):
... return "".join(map(lambda x:x in 'aeiou' and x*4 or x,my_string))+'!'
...
>>> exclamation('abcdef!')
'aaaabcdeeeef!'
答案 4 :(得分:0)
你可以迭代一个字符串,这样你就不必乱用范围,str.replace
不会修改现有的字符串。总之,你可以这样做:
def exclamation(string):
for c in "aeiou":
string = string.replace(c, c*4)
print(string + "!")
答案 5 :(得分:0)
您还可以使用列表理解:
>>> def exclamation(s):
... return ''.join([x*4 if x in 'aeiou' else x for x in 'apple']) + '!'
...
>>> exclamation('apple')
'aaaappleeee!'