我想把正文中的每一个字母改为下一个字母后的。但是这个程序不起作用。有人知道为什么吗。提前谢谢。y和z也有一个小问题
import string
letters = string.ascii_lowercase
text=("g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. ")
for x in range(1,24):
text.replace(letters[x],letters[x+2])
print(text)
在python中,字符串是不可变的。
因此
text.replace
返回字符串,但不更改其原始字符串。鉴于此,您不应该实际使用
text.replace
,因为您将不得不更改字符串24次(或者可能26次,见下文)。实际上,您可以创建一个转换表来同时执行所有更改,并使用string.translate
。要做到这一点,您应该首先使用
string.maketrans
将字母从后面的字母转换为后面的第二个字母(您想对“y”和“z”做什么?我想他们可能会变成“a”和“b”)。它将为translate
的所有可能字符提供一个翻译表。第一个错误是字符串是不可变的,因此replace不会执行任何操作。要替换字符串中的字符,必须重新分配:
但无论如何,这是一种非常低效的方法,因为您正在创建许多临时字符串,这些字符串稍后将被再次丢弃。您应该尝试遍历一次处理一个字符的字符串和结果join。
我不会把全部的解决办法都给你,这样你就可以再有一次机会了。
这应该符合您的要求:
相关问题 更多 >
编程相关推荐