问题:有人可以编辑我的两行代码吗?
只是想指出这是给学校分配的,所以我不想发布我的所有代码以防止复制/抄袭问题。由于我只对分配的少量需求有困难,所以我认为我的所有代码都不是必需的。
我指的是assgn的要求
Newx = ord(x)+3
Newx将是一个整数。要找出整数代表的字母,可以使用chr函数,如下所示: 实际字母= chr(x) 编写一个名为cipher的函数,该函数需要一个字符串和一个密钥(整数)。该函数将字符串加密为 另一个字符串并返回新字符串。请注意,当我们到达“ z”并且想要添加密钥时,我们必须 再滚动一次到字母表,因此ord('z')+ 3应该给我们ord('c')。
当我运行并测试程序并输入'z'时,我没有得到'c',我得到:
我导致该问题的程序这一部分的代码是:
example_string = letters[((ord(i)+key)%97)%26]
example2_string += letters[((ord(i)-key)%97)%26]
(example_string和example2_string是假名称)
答案 0 :(得分:2)
您不应执行任何模97运算。仅当您具有97个字符的字母时,才执行模97运算。
正确的方法是:
所以您会得到:
alphabetSize = ord('z') - ord('a') + 1
k = 3
c = 'z'
if (ord(c) >= ord('a')) | (ord(c) <= ord('z')):
n = ord(c) - ord('a')
n = (n + k) % alphabetSize
ctc = chr(n + ord('a'))
else:
ctc = c
print ctc
魔术(在这种情况下,由于在密钥+
之前使用了k
而进行了加密)当然在if
语句的3行中。当然可以将它们组合在一起-如果需要的话,可以将它们组合成一行-但这更简洁。
答案 1 :(得分:1)
我认为模97的位置错误。您应该先执行ord(i)%97-3,然后它才能正常工作。
chr(ord('a')+(ord('z')%97-3)%26)
example_string = letters[((ord(i)%97+key)%26]
您可以做的另一件事是从z中减去a,然后像这样进行减法:
chr(ord('a')+(ord('z')-ord('a')-3)%26)