尝试编写python代码来加密字符串。
加密字符串,输出是加密字符串。
signals:
但是在运行此脚本时,会出现错误。
print "Enter the string "
a=raw_input()
e=''
i=0
while i<len(a):
c=''
c+=a[i]
f=ord(c)
if i%3==0:
if f>21:
e+=chr(f-21)
else:
e+=chr(f+5)
elif i%3==1:
if ord(c)>24:
e+=chr(f-24)
else:
e+=chr(f+2)
else:
if ord(c)>21:
e+=chr(f-20)
else:
e+=chr(f+6)
i=i+1
del c
print e
答案 0 :(得分:0)
此缩进错误是由于脚本中的制表符和空格混合造成的。修复是遍历此文件中的每一行,确保为每个缩进级别使用四个空格。看起来你目前只使用两个空格,所以我不确定你是如何结束这个位置的,但删除所有缩进并使用四个空格而不是制表符可以解决你的问题。
尝试让您的代码看起来更像这样,看看您是否还有这些问题:
while i<len(a):
c=''
c+=a[i]
f=ord(c)
if i%3==0:
if f>21:
注意每个缩进级别有四个空格而不是两个空格。这意味着行c=''
是while
语句右侧的四个空格。此外,if f>21
行是if i%3==0
右侧的四个空格,while
语句右侧有八个空格,因为它是while
下的两个缩进级别言。
答案 1 :(得分:0)
我清理了你的代码:
plaintext = raw_input("Enter the string ")
encrypted = ''
for index, char in enumerate(plaintext):
char_code = ord(char)
index_mod = index % 3
if index_mod == 0:
if char_code > 21:
offset = -21
else:
offset = 5
elif index_mod == 1:
if char_code > 24:
offset = -24
else:
offset = 2
else:
if char_code > 21:
offset = -20
else:
offset = 6
encrypted += chr(char_code + offset)
print encrypted
为了好玩,也可以这样做:
offsets = [{True: -21, False: 5}, {True: -24, False: 2}, {True: -20, False: 6}]
upper_limits = [21, 24, 21]
plaintext = raw_input("Enter the string ")
encrypted = ''
for index, char in enumerate(plaintext):
char_code = ord(char)
index_mod = index % 3
offset = offsets[index_mod][char_code > upper_limits[index_mod]]
encrypted += chr(char_code + offset)
print encrypted
你甚至可以
offsets = [[5, -21], [2, -24], [6, -20]]
但不清楚那里发生了什么。
但是现在我在代码中看到偏移中的模式(第二个总是第一个减去26):
offsets = [5, 2, 6]
upper_limits = [21, 24, 21]
plaintext = raw_input("Enter the string ")
encrypted = ''
for index, char in enumerate(plaintext):
char_code = ord(char)
index_mod = index % 3
offset = offsets[index_mod]
if char_code > upper_limits[index_mod]:
offset -= 26
encrypted += chr(char_code + offset)
print encrypted