I'm trying to learn the process of defining/calling a (somewhat) complex function.
I understand the main idea, and can do it on a small (simple) scale.
A simple example:
def multiply(x, y):
return x*y
numb1 = 2
numb2 = 3
print(multiply(numb1, numb2))
Now what I'm trying to do is clean up my Vigenere cipher by defining the functions, and what's stumping me is what parameters to use and why. I don't want to change the (possibly poorly-written) code, however I just want to see how it would look after making use of defined functions.
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