'''
愷撒密碼 I
描述
凱撒密碼是古羅馬凱撒大帝用來對軍事情報進行加解密的算法,它採用了替換方法對信息中的每個英文字符循環替換爲字母表序列中該字符後面的第三個字符,即,字母表的對應關係以下:
原文: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~z和空格,請編寫一個程序,對輸入字符串進行凱撒密碼加密,直接輸出結果,其中空格不用進行加密處理。使用input()得到輸入。
輸入
示例1: python is good
輸出
示例1: sbwkrq lv jrrg
'''
#<1>
Str = input()
for i in range(0, len(Str)):
if Str[i] == ' ':
print(' ', end="")
elif Str[i] in ['x', 'y', 'z']:
# print('{}'.format(chr(ord(Str[i]) - 23)), end="") #另外一種寫法
print(chr(ord(Str[i])-23),end='')
else:
# print('{}'.format(chr(ord(Str[i]) + 3)), end="") #另外一種寫法
print(chr(ord(Str[i])+3),end='')
#<1>的另外一種表達,能夠解釋「邏輯或只能 「A or B」不能「A or B or C」」
- shuru=input()
- n=len(shuru)
- cheng=' '
- for i in range(n):
- if shuru[i]=='X'or shuru[i]=='x':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]=='Y' or shuru[i]=='y':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]=='Z' or shuru[i]=='z':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]==' ':
- cheng+=shuru[i]
- else:
- cheng+=chr(ord(shuru[i])+3)
- print(cheng[1:n+1])
#<2>
#p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"#這道題目中這樣寫也能夠
p="abcdefghijklmnopqrstuvwxyz"
n = input()
for i in n:
if i ==" ":#判斷爲空格特殊狀況
print(" ", end="")
else:
a=p.find(i)#查找索引位置
b=(a+3)%26
print(p[b],end="")
#<3>
P = input()
G = []
for i in P:
G.append(i)
L = len(G)
K = ["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"]
for i in range(L):
if G[i] in K:
x = K.index(G[i])
if x == 23:
x = 0
elif x == 24:
x = 1
else:
x = x + 3
print(K[x],end="")
else:
print(" ",end="")
#<4>這樣寫大寫也能夠轉換成對應的大寫字母
P = input()
G = []
for i in P:
G.append(i)
L = len(G)
K = ["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",'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']
for i in range(L):
if G[i] in K:
x = K.index(G[i])
if x == 23:
x = 0
elif x == 24:
x = 1
elif x == 25:
x = 3
elif x == 49:
x = 26
elif x == 50:
x = 27
elif x == 51:
x = 28
else:
x = x + 3
print(K[x],end="")
else:
print(" ",end="")
#<5>這樣寫也能夠轉換直接轉換對應的大小寫
Str = input()
for i in range(0, len(Str)):
if Str[i] == ' ':
print(' ', end="")
elif Str[i] in ['x', 'y', 'z','X','Y','Z']:
# print('{}'.format(chr(ord(Str[i]) - 23)), end="") #另外一種寫法
print(chr(ord(Str[i])-23),end='')
else:
# print('{}'.format(chr(ord(Str[i]) + 3)), end="") #另外一種寫法
print(chr(ord(Str[i])+3),end='')
#方法<2>很差實現大寫對應轉換,帶能夠啓示稍稍改進方法<4>
P = input()G = []for i in P: G.append(i)L = len(G)K = ["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",'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']for i in range(L): if G[i] in K: x = K.index(G[i]) if x == 23 or x == 24 or x == 25: x = (x+3)%26 elif x == 49: x = 26 elif x == 50: x = 27 elif x == 51: x = 28 else: x = x + 3 print(K[x],end="") else: print(" ",end="")