使用结构更换在字符串的不同占位符处替换字符串中的字母

2024-06-27 02:31:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题正在处理。问题的目标是使用字符串占位符i。如果i是偶数占位符,请将i处的字母替换为i -1处的字母。如果i占位符为奇数,则将字母i替换为i +1处的字母。在

以下是我目前为止的代码:

def easyCrypto (s):
    for i in range (0,len(s)-1):
        if i % 2 == 0:
            str(s).replace(i,((i-1)))
        if i % 2 != 0:
            str(s).replace(i,((i+2)))
    print (s)

我的错误:

^{pr2}$

更新!!在

基于答案的新代码:

def easyCrypto (s):
    for i in range (0,len(s)-1):
        if i % 2 == 0:
            s =  str(s).replace(s(i),(s(i-1)))
        else:
            s = s.replace(s(i), s(i + 1))
    print (s)

但是我仍然有以下错误:

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    easyCrypto('abc')
  File "C:/Python/cjakobhomework7.py", line 4, in easyCrypto
    s =  str(s).replace(s(i),(s(i-1)))
TypeError: 'str' object is not callable

有什么想法吗?谢谢你


Tags: 代码inforlenifdef错误字母
2条回答

使用s[i]而不是s(i),其他索引也是如此。在

这里有两件事:

  1. str.replace不会自动对其参数进行字符串化。您需要手动将它们转换为字符串。记住:“显式比隐式好。”

  2. str.replace不能正常工作,因为字符串在Python中是不可变的。您需要将s重新分配给str.replace返回的新字符串对象。

你的代码应该是:

s = s.replace(str(i), str(i-1))

此外,还可以将if i % 2 != 0:替换为else:,因为第二个if语句的条件只有在第一个if语句为false时才能为true:

^{pr2}$

关于您编辑的问题,您试图通过在字符串s后面加上括号来调用它作为一个函数。您需要使用方括号来索引字符串:

>>> 'abcde'[0]
'a'
>>> 'abcde'[3]
'd'
>>>

在你的情况下,应该是:

s =  s.replace(s[i], s[i-1])

一般来说,括号(...)用于调用函数,而方括号[...]用于索引序列/容器。在

相关问题 更多 >