Hello!
Just finished the most difficult off-platform project in Data Scientist career path. It took a lot of time and effort, but the emotional reward is outstanding.
I would love to get your feedback and constructive critics
alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
def decypher_caesar(message, offset):
dec_message = []
for i in range(len(message)):
if message[i] not in alphabet:
dec_message.append(message[i])
else:
for j in range(len(alphabet)):
if alphabet[j] == message[i]:
if (offset + j) < len(alphabet):
dec_message.append(alphabet[j+offset])
elif (offset + j) >= len(alphabet):
dec_message.append(alphabet[j+offset-len(alphabet)])
return ''.join(dec_message)
message_1 = "xuo jxuhu! jxyi yi qd unqcfbu ev q squiqh syfxuh. muhu oek qrbu je tusetu yj? y xefu ie! iudt cu q cuiiqwu rqsa myjx jxu iqcu evviuj!"
print(decypher_caesar(message_1, 10))
def cypher_message(message, offset):
c_message = []
for i in range(len(message)):
if message[i] not in alphabet:
c_message.append(message[i])
else:
for j in range(len(alphabet)):
if alphabet[j] == message[i]:
if (offset - j) < len(alphabet):
c_message.append(alphabet[j-offset])
elif (offset - j) >= len(alphabet):
c_message.append(alphabet[j-offset+len(alphabet)])
return ''.join(c_message)
my_message = "hey there! this is an example of a caesar cipher. were you able to decode it? i hope so! send me a message back with the same offset!"
print(cypher_message(my_message, 10))
message_2 = "jxu evviuj veh jxu iusedt cuiiqwu yi vekhjuud."
print(decypher_caesar(message_2, 10))
message_3 = "bqdradyuzs ygxfubxq omqemd oubtqde fa oapq kagd yqeemsqe ue qhqz yadq eqogdq!"
print(decypher_caesar(message_3, 14))
message_4 = "vhfinmxkl atox kxgwxkxw tee hy maxlx hew vbiaxkl tl hulhexmx. px'ee atox mh kxteer lmxi ni hnk ztfx by px ptgm mh dxxi hnk fxlltzxl ltyx."
print(decypher_caesar(message_4, 7))
test = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"
def decrypt_vigеnere(message, keyword):
result = []
#Step 1: Filling keyword list
keyword_string = []
kw_counter = 0
for i in range(len(message)):
if message[i] not in alphabet:
keyword_string.append(message[i])
kw_counter += 1
else:
keyword_string.append(keyword[(i-kw_counter) - ((i-kw_counter)//len(keyword)*len(keyword))])
#Step 2: Filling result list
for i in range(len(message)):
if message[i] not in alphabet:
result.append(message[i])
else:
for j in range(len(alphabet)):
#finding keyword_string element's index in alphabet
for k in range(len(alphabet)):
if alphabet[k] == keyword_string[i]:
offset = k
if alphabet[j] == message[i]:
if (offset - j) < len(alphabet):
result.append(alphabet[j-offset])
elif (offset - j) >= len(alphabet):
result.append(alphabet[j-offset+len(alphabet)])
#Step 3: Joining result list into string
return ''.join(result)
print(decrypt_vigеnere(test, "friends"))
test_vigenere_crypt = "hello, friend, i've spent a bunch of time and nerves to solve this puzzle, but, thanks to you, i've reached my goal and improved my python skills!"
def crypt_vigеnere(message, keyword):
result = []
#Step 1: Filling keyword list
keyword_string = []
kw_counter = 0
for i in range(len(message)):
if message[i] not in alphabet:
keyword_string.append(message[i])
kw_counter += 1
else:
keyword_string.append(keyword[(i-kw_counter) - ((i-kw_counter)//len(keyword)*len(keyword))])
#Step 2: Filling result list
for i in range(len(message)):
if message[i] not in alphabet:
result.append(message[i])
else:
for j in range(len(alphabet)):
#finding keyword_string element's index in alphabet
for k in range(len(alphabet)):
if alphabet[k] == keyword_string[i]:
offset = k
if alphabet[j] == message[i]:
if (offset + j) < len(alphabet):
result.append(alphabet[j+offset])
elif (offset + j) >= len(alphabet):
result.append(alphabet[j+offset-len(alphabet)])
#Step 3: Joining result list into string
return ''.join(result)
crypted = crypt_vigеnere(test_vigenere_crypt, "friends")
print(crypted)
print(decrypt_vigеnere(crypted, "friends"))