当我执行以下操作时:
def encrypt(string):
str(string).replace('0', 'A')
return(string)
encrypt(000)
仅输出0
。
我想要做的是用0
替换所有A
来测试我要制作的加密程序。我想要的输出是AAA
。
那么,当我尝试用0
替换A
时,为什么它不起作用?
答案 0 :(得分:4)
Python字符串是不可变的。 无方法或操作符因此能够根据您的需要就地变换字符串。
相反,他们返回结果,您必须分配到名称(或返回,等等)。
所以,请使用:
return str(string).replace('0', 'A')
顺便说一句,不可变的字符串是一个很好的想法,Java和许多后来的语言从Python中复制它们......: - )
当然,如果你使用带有 NO 引号的000
作为参数,那么该函数已经并且不知道你键入了多少个零 - 它只是接收到数字{{ 1}}!你最好传递一个字符串(它周围的引号),所以也可能在这里失去0
。
答案 1 :(得分:0)
您需要将更改分配给字符串。
def encrypt(string):
return str(string).replace('0', 'A')
答案 2 :(得分:0)
你将无法获得AAA'如果您传递NUMBER 000,则输出。因为数字000与0相同并且转换为字符串' 0'。如果您按照其他答案中的说明正确实施了退货/更换功能,则输入数字000并返回' A'
。你可能想要一个传递字符串而不是数字的新函数,否则你永远无法区分000和0(或任何其他数量的零000000000000等)
BTW,你调用了你的函数变量" string"即使您传递一个数字,然后将其转换为带有str的字符串。这是一个很好的预示。这是一个能用字符串而不是数字做你想做的功能:
def encrypt(string):
return string.replace('0', 'A')
>>> encrypt('000')
'AAA'
答案 3 :(得分:0)
您的代码没有任何问题。 你应该将000作为字符串传递,如果你不将000视为0,那么你只得到一个A替换单个0。
def encrypt(string):
return str(string).replace('0', 'A')
print encrypt('000')
这将AAA作为输出。