-2
当我最后一个问题中的一个没有得到很好的回答后,我决定考虑这个问题的所有答案(对吧?)。一个困扰我的是定义/调用一个简单的函数。如何定义这些功能?
我明白主要想法,并且可以在小(简单)的范围内完成。例如:
def multiply(x, y):
return x*y
numb1 = 2
numb2 = 3
print(multiply(numb1, numb2))
很简单。现在我想要做的是通过定义函数来清理我的Vigenere密码,并且困扰我的是什么参数以及为什么。我不想改变(可能写得不好,不开心)代码,但我只想看看在使用定义的函数后它会如何看待它。
message = input("Enter a message to encrypt:\n").upper().replace(" ", "")
print("Enter your encryption key ("+str(len(message)),"or less letters.): ")
key = input().upper().replace(" ", "")
div_times = int(int(len(message))/int(len(key)))
remainder = int(len(message))%int(len(key))
key_ring = (((key)*(div_times+1))[:-(len(key)-remainder)])
alph = 26
print("-------\n"
"Message: ",message,"\n"
"Key: ",key_ring,
"\n-------")
mvalues = [0]*len(message)
kvalues = [0]*len(key_ring)
m_position = 0
k_position = 0
for letter in message:
mvalues[m_position] = ord(letter)
m_position += 1
for key in key_ring:
num = alph - (int(ord("Z")) - int(ord(key)))
kvalues[k_position] = num - 1
k_position += 1
m_position = 0
k_position = 0
print("\nEncrypted message: ", end="")
for character in message:
newletter_v = (mvalues[m_position] + kvalues[k_position])
if newletter_v > ord("Z"):
newletter_v -= 26
elif newletter_v < ord("A"):
newletter_v += 26
print(chr(newletter_v)+"", end="")
m_position += 1
k_position += 1
我试过的东西结合,我不断收到错误或不正确的输出:
def encryptMessage(message, key):
mvalues = [0]*len(message)
kvalues = [0]*len(key_ring)
m_position = 0
k_position = 0
for letter in message:
mvalues[m_position] = ord(letter)
m_position += 1
for key in key_ring:
num = alph - (int(ord("Z")) - int(ord(key)))
kvalues[k_position] = num - 1
k_position += 1
message = input("Enter a message to encrypt:\n").upper().replace(" ", "")
print("Enter your encryption key ("+str(len(message)),"or less letters.): ")
key = input().upper().replace(" ", "")
div_times = int(int(len(message))/int(len(key)))
remainder = int(len(message))%int(len(key))
key_ring = (((key)*(div_times+1))[:-(len(key)-remainder)])
alph = 26
print("-------\n"
"Message: ",message,"\n"
"Key: ",key_ring,
"\n-------")
mvalues = [0]*len(message)
kvalues = [0]*len(key_ring)
m_position = 0
k_position = 0
encryptMessage(message, key)
m_position = 0
k_position = 0
print("\nEncrypted message: ", end="")
for character in message:
newletter_v = (mvalues[m_position] + kvalues[k_position])
if newletter_v > ord("Z"):
newletter_v -= 26
elif newletter_v < ord("A"):
newletter_v += 26
print(chr(newletter_v)+"", end="")
m_position += 1
k_position += 1