在下面的第一个For循环中,代码成功地将字母num位置向右移动。问题出现在第二个For循环中,它并没有像它应该的那样完全颠倒它。我在下面列出了输出。任何意见,将不胜感激。谢谢
if(line.contains(input))
cipher("纽约时报在纽约市。")
输出: (我为num输入了数字3)
First For Loop的输出:Wkh Qhz \ run Wlphv lv lq Qhz \ run Flw ||。
第二轮For Loop的输出:TheNewYYorkTimesisinNewYYorkCityy +
预计第二轮的输出:纽约时报在纽约市。
答案 0 :(得分:1)
这里有几个问题。
您应该使用else
。
您使用if <condition>:
关注if not <condition>:
。相反,使用else:
if i.isalpha():
i = chr(ord(i)+num)
final.append(i)
else:
final.append(i)
这不仅仅是整容......因为您更改了i
区块中的if
,可能 if
和{{1}阻止在单次迭代中运行。使用if not
解决了这个问题(无论如何都是更好的风格)。
您忘记在解密部分调用else
您需要在解密部分的isalpha
调用结束时添加parens,否则只会运行isalpha
块(因为方法或函数对象始终被视为true)。< / p>
if
您在解密if chr(ord(i)-num).isalpha():
...
循环中使用了错误的变量
您将else
附加到解密部分的x
块中的列表,但else
仅在x
块中有意义。使用if
。
i
修复这些内容应成功生成原始邮件。
答案 1 :(得分:0)
答案很简单。在第一个循环中,您没有对空格执行任何转换。
if not i.isalpha():
final.append(i)
但是在第二个循环中,你试图在附加到解密列表之前转换空格。
if not chr(ord(i)-num).isalpha:
finalReverse.append(x)
此外,您还要附加x,它是来自上条件的值。
finalReverse.append(x)
而不是这个,你只需附加原始值。
if not chr(ord(i)).isalpha:
finalReverse.append(char(ord(i)))
如果您还有问题,请告诉我。