函数在Python中提供错误的输出

时间:2016-09-09 14:04:29

标签: python

通过这段代码,我希望将字符串s中出现的所有点(.)替换为恰好位于对称相对位置的字符。例如:如果s=a.bcdcbba,则.应替换为b

即:

i位置的元素应该被len(s)-i-1位置的元素替换。此函数为g.....g...等情况提供了错误的输出。任何帮助?

def replacedots(s):

  for i in range(0,len(s)):
      if s[i]==".":
              s=s.replace(s[i],s[len(s)-i-1],1)

  return s    

1 个答案:

答案 0 :(得分:1)

@ chepner的方式:

def replacedots(s):
    return ''.join(x if x !='.' else y for x, y in zip(s, reversed(s)))

替代方案:

def replacedots(s):
    return ''.join(c if c != '.' else s[-i - 1] for i, c in enumerate(s))

当位置i处的字符和位置len(s) - i - 1处的字符为.时,点将保持为点。

示例:

s = "foo.bar"