【问题标题】:How can I exchange a specific letter in a string using a function?如何使用函数交换字符串中的特定字母?
【发布时间】:2021-11-29 02:50:08
【问题描述】:

所以我有这个函数 swapplaces(s, c, r),它接受一个字符串 s、一个长度为 1 的字符串 c 和一个长度为 1 的字符串 r。该函数将返回一个新字符串,其中所有出现字符 c 被 r 替换。大写和小写字母的处理方式不同。

例子

swapplaces("let","l","g") == "get"
swappalces("chip","c","s") == "ship"
swapplaces("lay low for lola","l","s") == "say sow for sosa"
swapplaces("OcapudoliciOus", "O", "e") == "ecapudolicieus"

这是我目前的代码

def listToString(s): 
    str1 = " " 
    return (str1.join(s))
def swapplaces(s,c,r):
    q = list(s)
    for c in q:
       q.replace(c,r)
    return listToString(q)

但是,我的代码根本不起作用,我应该进行哪些更改??

【问题讨论】:

  • 这是一个声明:return s.replace(c,r)。没有列表,没有迭代。
  • 除了list 类没有.replace() 方法。

标签: python list function


【解决方案1】:

如前所述,x.replace(y, z) 会将字符串 x 中的所有 y 实例替换为字符 z。

旁注:注意变量命名。迭代器for c in qswapplaces() 函数的输入变量c 同名。这意味着当您到达q.replace(c,r) 时,您的“c”不再是函数输入变量,而是迭代器。考虑:

def test(a):
    q = list(a)
    print(f'Before {a}')
    for a in q:
        print(a)
    print(f'After {a}')

test("Hello")

输出

Before Hello
H
e
l
l
o
After o

【讨论】:

    【解决方案2】:

    您的函数是否需要如此复杂?您的老师是否禁止您使用某些功能或方法?我能看到的最简单的解决方案是:

    def swapplaces(s, c, r):
        return s.replace(c, r)
    

    这就足够了吗?我猜你有一些你没有分享的限制。这是真的?是否需要将输入字符串作为列表处理?

    您可以通过确保 cr 只是一个字符来使其更加健壮...

    def swapplaces(s, c, r):
        c, r = c[:1], r[:1]
        return s.replace(c, r)
    

    另外,您的 listToString() 有一个错误。我会改变:

    str1 = " "
    

    到:

    str1 = ""  
    

    【讨论】:

      【解决方案3】:

      这是对您的代码的更正。

      def listToString(s): 
          str1 = "" 
          return (str1.join(s))
      
      def swapplaces(s,c,r):
          q = s
          for c in q:
             q.replace(c,r)
          return listToString(q)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        相关资源
        最近更新 更多