key='monarchy' message='abcdefghiklmnopqrstuvwxyz' key1='' word='' for i in key: if (i not in key1): key1+=i message=message.replace(i,'') word=key1+message list1=[] list2=[] for y in word: list1 += y if len(list1)>4: list2.append(list1) list1=[] ming_1 = input() ming_2 = input() def abc(ming): ii = 0 ming = list(ming) while True: if ii%2==1: if ming[ii] == ming[ii-1]: ming.insert(ii,'x') ii += 1 if len(ming)==ii: break if len(ming)%2==1: ming.append('x') return ming def mes(x): for i in range(len(list2)): for j in range(len(list2[i])): if x == list2[i][j]: return i,j def jiami(ming): ming = abc(ming) password = '' for j in range(len(ming)): if j%2==0: x = ming[j] y = ming[j+1] x_ = mes(x) y_ = mes(y) if x_[0]==y_[0]: x_ps = list2[x_[0]][(x_[1]+1)%5] y_ps = list2[y_[0]][(y_[1]+1)%5] elif x_[1]==y_[1]: x_ps = list2[(x_[1]+1)%5][x_[1]] y_ps = list2[(y_[1]+1)%5][y_[1]] else : x_ps = list2[x_[0]][y_[1]] y_ps = list2[y_[0]][x_[1]] password += x_ps password += y_ps return password print(jiami(ming_1)) print(jiami(ming_2))改下错
时间: 2024-01-20 09:02:59 浏览: 157
君主制:具有高级角色继承的分层访问管理系统。 :butterfly:
这段代码缺少了一个关键字,导致运行时会出现错误。具体来说,代码中使用了一个名为 jiami 的函数,在这个函数中调用了另外两个函数 abc 和 mes。但是,代码没有定义 jiami 函数的返回值,导致最后两行的 print 函数无法正确输出结果。
要解决这个问题,可以在 jiami 函数的结尾添加一个 return 语句,将加密后的密码作为函数的返回值。这样,当 jiami 函数被调用时,就可以得到正确的加密结果,并将其输出到屏幕上。
另外,为了能够正确输出加密结果,你还需要将 ming_1 和 ming_2 的定义修改为以下格式:
```
ming_1 = input("请输入需要加密的明文1:")
ming_2 = input("请输入需要加密的明文2:")
```
这样做之后,用户在运行程序时就可以输入明文,而不是在代码中预先定义它们的值。
修改后的代码如下:
```
key='monarchy'
message='abcdefghiklmnopqrstuvwxyz'
key1=''
word=''
# 构造矩阵
for i in key:
if (i not in key1):
key1+=i
message=message.replace(i,'')
word=key1+message
list1=[]
list2=[]
for y in word:
list1 += y
if len(list1)>4:
list2.append(list1)
list1=[]
# 定义需要加密的明文
ming_1 = input("请输入需要加密的明文1:")
ming_2 = input("请输入需要加密的明文2:")
def abc(ming):
ii = 0
ming = list(ming)
while True:
if ii%2==1:
if ming[ii] == ming[ii-1]:
ming.insert(ii,'x')
ii += 1
if len(ming)==ii:
break
if len(ming)%2==1:
ming.append('x')
return ming
def mes(x):
for i in range(len(list2)):
for j in range(len(list2[i])):
if x == list2[i][j]:
return i,j
def jiami(ming):
ming = abc(ming)
password = ''
for j in range(len(ming)):
if j%2==0:
x = ming[j]
y = ming[j+1]
x_ = mes(x)
y_ = mes(y)
if x_[0]==y_[0]:
x_ps = list2[x_[0]][(x_[1]+1)%5]
y_ps = list2[y_[0]][(y_[1]+1)%5]
elif x_[1]==y_[1]:
x_ps = list2[(x_[1]+1)%5][x_[1]]
y_ps = list2[(y_[1]+1)%5][y_[1]]
else :
x_ps = list2[x_[0]][y_[1]]
y_ps = list2[y_[0]][x_[1]]
password += x_ps
password += y_ps
return password
# 输出加密结果
print(jiami(ming_1))
print(jiami(ming_2))
```
阅读全文