【问题标题】: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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2013-02-08
        • 1970-01-01
        • 2021-12-25
        相关资源
        最近更新 更多