'Replace'字符串函数在 Python 中不起作用



>当我执行以下操作时:

def encrypt(string):
    str(string).replace('0', 'A')
    return(string)
encrypt(000)

只有0作为输出出来。

我想做的是用A替换所有0来测试我将要制作的加密程序。我想要的输出是 AAA .

那么为什么当我尝试用A替换0时它不起作用呢?

Python 字符串是不可变的。 因此,任何方法或运算符无法像您希望的那样就地改变字符串。

相反,它们返回一个结果,您必须将其分配给名称(或返回,无论如何)。

因此,请使用:

return str(string).replace('0', 'A')

顺便说一句,不可变字符串是一个好主意,Java和许多后来的语言从Python复制了它们...:-)

当然,如果你使用带有 NO 引号的 000 作为参数,该函数已经并且不可能知道你输入了多少个零——它只接收数字0! 你最好传递一个字符串(引号括起来),所以可能也会在这里丢失str

您需要

将更改分配给字符串。

def encrypt(string):
    return str(string).replace('0', 'A')

如果您传递数字 000,您将无法获得"AAA"。因为数字 000 与 0 相同并转换为字符串"0"。如果您按照其他答案中的说明正确实现了返回/替换函数,则输入数字 000 的结果为返回"A"。

可能你想要一个新函数,你传递字符串而不是数字,否则你将永远无法区分 000 和 0(或任何其他零数 00000000000000 等)

顺便说一句,即使您传递一个数字然后使用 str 将其转换为字符串,您也将函数变量称为"字符串"。这是很好的铺垫。这是一个函数,它将对字符串而不是数字执行您想要的操作:

def encrypt(string):
    return string.replace('0', 'A')
>>> encrypt('000')
'AAA'

你的代码没有错。如果不是,则应将 000 作为字符串传递 000 被视为 0,因此您只得到一个 A 替换单个 0。

def encrypt(string):
  return str(string).replace('0', 'A')
print encrypt('000')

这给出了 AAA 作为输出。

最新更新