0

我对 Python 相当陌生,正在尝试创建自己的小程序。我在替换功能上有问题。我想用它的位置号替换字符串中的每个偶数位置,当位置大于10时出现问题;它只是不断用偶数替换 10 之后的每个字符。这是我的代码

def replaceEvenUntil(st,n):
    for i in range(len(st)):
        if i % 2 == float(0):
            st = st.replace(st[i], str(i), n)
    return st

>>> replaceEvenUntil("abcdefghijklmnop", 100)
'0b2d4f6h8j101214161820'

我的代码在哪里犯了错误?

4

1 回答 1

1

一些东西:

  1. float并且str是 Python 中的函数。你不需要写int(0)str('foo')
  2. str.replace('a', 'b')用 替换所有出现ab。你真的不想要那个。
  3. 您正在循环中重新分配st,但 的大小st可能会改变(10是两个字符),因此当字符串长度超过 10 个字符时,您将得到一个错误。

我会构建一个临时字符串:

def replaceEvenUntil(s, n):
    result = ''

    for i in range(min(n, len(s))):
        if i % 2 == 0:
            result += str(i)
        else:
            result += s[i]

    return result

或与enumerate()

def replaceEvenUntil(s, n):
    result = ''

    for i, c in enumerate(s):
        if i <= n and i % 2 == 0:
            result += str(i)
        else:
            result += s[i]

    return result
于 2013-11-13T03:52:56.920 回答