我是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'
我的代码在哪里犯了错误?
答案 0 :(得分:1)
一些事情:
float
和str
是Python中的函数。您无需撰写int(0)
或str('foo')
。str.replace('a', 'b')
将a
的所有次出现替换为b
。你真的不想那样。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