凱撒密碼偏移量為 21,字母為“abcdefghijklmnopqrstuvwxyz0123456789”。
例如“Xvzcvb”應該等于“Caesar”,但輸出是“CaeNaM”
ALPHABET = "abcdefghijklmnopqrstuvwxyz0123456789."
def decrpytstr(message):
#declare variables
newString = str()
ALPHABET = int()
oneLetter = str()
newAlphabetValue = int()
#loop to assign new alphabet value
for index in range(0, len(message)):
oneLetter = message[index]
ALPHABET = ord(oneLetter)
#assinging new alphabet value
newAlphabetValue = ALPHABET - 21
#creating the new string
newString = newString chr(newAlphabetValue)
return newString
def main():
message = input("Enter text: ")
decrpytstr(message)
newString = decrpytstr(message)
print(newString)
input("Press ENTER to exit")
main()
uj5u.com熱心網友回復:
有幾個問題
- 你實際上并沒有使用你原來的 ALPHABET 值
- 您不考慮大寫字符
- 我們需要環繞,這樣當我們減去魔法 21 步時,我們總能在字母表中找到一些東西
糾正這些會給我們這樣的東西......
ALPHABET = "abcdefghijklmnopqrstuvwxyz0123456789."
def decrpytstr(message):
newString = ''
#loop to assign new alphabet value
for index in range(0, len(message)):
oneLetter = message[index]
#assinging new alphabet value
newAlphabetValue = (ALPHABET.find(oneLetter.lower()) - 21) % len(ALPHABET) (ord('A') if oneLetter.isupper() else ord('a'))
#creating the new string
newString = newString chr(newAlphabetValue)
return newString
def main():
message = input("Enter text: ")
decrpytstr(message)
newString = decrpytstr(message)
print(newString)
input("Press ENTER to exit")
main()
uj5u.com熱心網友回復:
https://www.asciitable.com/
正如我看到的ascii表,b的值98將是M77減21。我想你必須分別處理大寫和小寫。
[已編輯] 我不完全理解您想要實作的目標,但是這個怎么樣?
ALPHABET = "abcdefghijklmnopqrstuvwxyz"
def decrpytstr(message):
new_string = ""
for i in range(len(message)):
character = message[i]
new_character = ALPHABET[ALPHABET.find(character) - 21 % 26]
new_string = new_string new_character
return new_string
def main():
message = input("Enter text: ")
decrpytstr(message)
newString = decrpytstr(message)
print(newString)
input("Press ENTER to exit")
main()
Enter text: xvznvm
caesar
Press ENTER to exit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/415102.html
標籤:
