描述
愷撒密碼是古羅馬愷撒大帝用來對軍事情報進行加解密的算法,它采用了替換方法對信息中的每一個英文字符循環替換為字母表序列中該字符后面的第三個字符,即,字母表的對應關系如下:
原文: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
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
對於原文字符P,其密文字符C滿足如下條件:C=(P+3) mod 26
上述是凱撒密碼的加密方法,解密方法反之,即:P=(C-3) mod 26
假設用戶可能使用的輸入包含大小寫字母a~zA~Z、空格和特殊符號,請編寫一個程序,對輸入字符串進行愷撒密碼加密,直接輸出結果,其中空格不用進行加密處理。使用input()獲得輸入。
輸入
示例1: python is good
輸出
示例1: sbwkrq lv jrrg
就是要注意它題目所說的公式里面的P,C只是一個未知數,而不是真正的p和c。
c即是用Code來代指密碼,至於p嘛,paragraph?
if i>='A' and i<='Z' : c = ord('A') + (ord(i) - ord('A') + 3)%26 C = chr(c) print('{}'.format(C),end='') elif i>='a' and i<='z' : c = ord('a') + (ord(i) - ord('a') + 3)%26 C = chr(c) print('{}'.format(C),end='') else : print(i,end='')
函數方法不再打印出來,參考答案如下:
s = input() t = "" for c in s: if 'a' <= c <= 'z': t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 ) elif 'A'<=c<='Z': t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 ) else: t += c print(t)