我已经创建了代码,并将其输出。对于检查输入,我有2/3次正确运行,但输入时缺少部分输出
“你好,世界!”你知道吗
一切运转正常。你知道吗
plainText = input("Enter a message: ")
distance = int(input("Enter the distance value: "))
code = ""
for ch in plainText:
ordvalue = ord(ch)
cipherValue = ordvalue + distance
if cipherValue > ord ('z'):
cipherValue = ord('a') + distance - (ord('z') - ordvalue + 1)
code = code + chr(cipherValue)
print(code)
加密输出应该是Lipps${svph%
,但是我得到了Lipps$asvph%
。只是想找到我在这里丢失的东西。你知道吗
凯撒密码只改变
a..z
范围内的字符。所有其他字符保持不变。代码中缺少此限制。你知道吗顺便说一下,在
> ord('z')
的情况下,您可以使代码简单得多:或者,如果你不想写数字26,而是想解释一下:
对于那些想知道-这是一个语言问题。它应该是“~”而不是“a”和“z”。你知道吗
希望这对将来的人有帮助。你知道吗
您希望
'w'
(从'Hello world!'
)转换成'{'
-而不是'a'
。但事实并非如此。你知道吗从你的例子可以推断
distance
是4
:'H'
变成'L'
。然后,根据您的算法,'w'
必然会变成'a'
:ord('w') + 4
等于ord('z') + 1
,因为ord('w') == ord('z') - 3
。因此if
语句的then子句将被执行。如果您通过用ord('z') - 3
替换ordvalue
来计算结果,您将看到结果将是ord('a')
。你知道吗因为,正如您在注释中所解释的,您希望使代码将字符串
'Hello World!'
转换为'Lipps${svph%'
,所以您可能只需要消除代码中执行“overwrap”处理的部分,即消除处理cipherValue > ord ('z')
的情况的代码。你知道吗相关问题 更多 >
编程相关推荐