python-3.x 仅反转字符串中的元音

ddrv8njm  于 2022-11-26  发布在  Python
关注(0)|答案(4)|浏览(155)

给定一个字符串,我只想反转元音字母,而保留其余字符串不变。如果输入是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)

为了获得所需的输出,应该对此代码进行哪些更改?

kgqe7b3p

kgqe7b3p1#

将单词转换成字母列表并返回要简单一些:

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))
vh0rcniy

vh0rcniy2#

代码中几乎没有逻辑错误。

  • 您需要将.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)
r1wp621o

r1wp621o3#

这里有一段代码,我已经工作了,这是相同的问题。

编写一个程序,只反转字符串中的元音。
示例:
输入:印度
输出:andiI

def revv(word):
    a = ''
    b = ''
    for x in word:
        if x in 'aeiouAEIOU':
            a = a+x
            b = b+'-'
        else:
            b = b+x
    c = ''
    d = 0
    a = a[::-1]
    for x in b:
        if x=='-':
            c = c+a[d]
            d = d+1
        else:
            c = c+x
    print(c)

revv('India')

输出:andiI

xoshrz7s

xoshrz7s4#

这必须工作。首先找到元音和元音的索引,你也需要把它存储在一个变量中。之后,你可以很容易地反向购买。

a = "fisherman"

 def isVowel(c):
    if c == "a" or c == "e" or c == "u" or c == "i" or c == "o":
        return True
    return False

 def reverseOnlyVowels(string):
    indexes = []
    chars = [] 

    # get vowels and indexes
    for index, i in enumerate(list(string)):
        if isVowel(i):
            indexes.append(index)
            chars.append(i)

    # reverse vowels
     stringList = list(string)
     index1 = 0
     for i, index in zip(chars[::-1], indexes[::-1]):
         stringList[index] = chars[index1]
        index1 += 1
    
    return "".join(stringList)

print(reverseOnlyVowels(a))

相关问题