gpt4 book ai didi

python - Caesar's code - Python 实现中的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:32 24 4
gpt4 key购买 nike

您好,在此先感谢您的回答,我试图为 PythonChallenge 做第一个任务: http://www.pythonchallenge.com/pc/def/map.html我有一些关于代码的问题。我知道这段代码有效:

import string
letters = string.ascii_lowercase
uletters = string.ascii_uppercase
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(0, 26):
text = text.replace(letters[x-2], uletters[x])
print(text.lower())

我稍微研究了一下代码,以下是我的观察结果,但我有疑问:1. 当我运行时:

text = text.replace(letters[x], uletters[x+2])

出现错误,例如“trynslyte”而不是“翻译”。为什么这次转变会做出这样的改变?2.当我改变时:字母 = string.ascii_uppercase

uletters = string.ascii_lowercase

出现了一堆“z”和“y”。再说一遍,怎么回事?

非常感谢

最佳答案

当您评估 letters[x-2] 并且 x 为 0 或 1 时,您最终得到 letters[-1]letters[-2],在 Python 中分别访问最后一个和倒数第二个元素。这就是此步骤起作用的原因。但是,大于最后一个元素索引的索引不会产生相同的效果,因此当 x 太大时,letters[x+2] 将不起作用.

你需要做的是这样的:

letters[(x+2)%len(letters)]

强制这种环绕。

关于python - Caesar's code - Python 实现中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com