gpt4 book ai didi

python - 凯撒密码Python

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

在下面的第一个 For 循环中,代码成功地将字母 num 位向右移动。问题出在第二个 For 循环中,它并没有像预期的那样完全反转。我在下面包含了输出。任何意见,将不胜感激。谢谢

def cipher(message):
num = int(input())
final = []
finalReverse = []
for i in message:
if i.isalpha():
i = chr(ord(i)+num)
final.append(i)
if not i.isalpha():
final.append(i)
final = ''.join(map(str, final))
print(final)
for i in final:
if chr(ord(i)-num).isalpha:
x = chr(ord(i)-num)
finalReverse.append(x)
if not chr(ord(i)).isalpha:
finalReverse.append(char(ord(i)))
finalReverse = ''.join(map(str, finalReverse))
print(finalReverse)

cipher(“《纽约时报》在纽约市。”)

输出:(我输入 num 为数字 3)

第一个 For 循环的输出:Wkh Qhz\run Wlphv lv lq Qhz\run Flw||。

第二个 For 循环的输出:TheNewYYorkTimesisinNewYYorkCityy+

预期第二个 For 循环的输出:《纽约时报》位于纽约市。

最佳答案

这里有几个问题。

您应该使用else .

您关注if <condition>:if not <condition>: 。相反,使用 else:

if i.isalpha():
i = chr(ord(i)+num)
final.append(i)
else:
final.append(i)

这不仅仅是装饰性的......因为你改变了 iif block ,两者都有可能 ifif not block 在单次迭代中运行。使用else解决了这个问题(而且是更好的风格)。

您忘记调用isalpha在解密部分

您需要将括号添加到 isalpha 的末尾调用解密部分,否则仅 if block 将永远运行(因为方法或函数对象始终被认为是 true)。

if chr(ord(i)-num).isalpha():
...

您在解密中使用了错误的变量 else循环

您正在追加 x到解密部分的 else 中的列表阻止,但是x仅在 if 中有意义堵塞。使用i .

if chr(ord(i)-num).isalpha():
x = chr(ord(i)-num)
finalReverse.append(x)
else:
finalReverse.append(i)

修复这些问题应该会成功生成您的原始消息。

关于python - 凯撒密码Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749806/

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