【问题标题】:Reverse only vowels in a string仅反转字符串中的元音
【发布时间】:2021-03-18 09:53:03
【问题描述】:
给定一个字符串,我只想反转元音并保留剩余的字符串。如果输入是fisherman,输出应该是fashermin。我尝试了以下代码:
a=input()
l=[]
for i in a:
if i in 'aeiou':
l.append(i)
siz=len(l)-1
for j in range(siz,-1,-1):
for k in a:
if k in 'aeiou':
a.replace(k,'l')
print(a)
应在此代码中进行哪些更改以获得所需的输出?
【问题讨论】:
标签:
python
python-3.x
list
【解决方案1】:
将单词变成字母列表并返回会更容易一些:
a=input('Enter word: ')
l=[]
for i in a:
if i in 'aeiou':
l.append(i)
letters = list(a)
for i in range(len(letters)):
if letters[i] in 'aeiou':
letters[i] = l.pop(-1)
print(''.join(letters))
【解决方案2】:
代码中几乎没有逻辑错误。
-
您需要将 .replace 函数的 o/p 保存在另一个字符串中
a= a.replace(k,'l')
-
'l' 是一个字符串。我确定您要访问的是列表访问权限,因此正确的语法是:a= a.replace(k,l[j])
-
如果您使用相同的字符串(在您的情况下为字符串'a')进行替换,它将导致所有元音被相同的元音替换。
使用与您相同的变量名,以下是正确的方法之一:
a=input()
l=""
for i in a:
if i in 'aeiouAEIOU':
l+=i
new_a = ""
for k in a:
if k in "aeiouAEIOU":
new_a += l[-1]
l = l[:-1]
else:
new_a += k
print(a)
print(new_a)