def caesar(plaintext,shift):
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"]
#Create our substitution dictionary
dic={}
for i in range(0,len(alphabet)):
dic[alphabet[i]]=alphabet[(i+shift)%len(alphabet)]
#Convert each letter of plaintext to the corrsponding
#encrypted letter in our dictionary creating the cryptext
ciphertext=("")
for l in plaintext.lower():
if l in dic:
l=dic[l]
ciphertext+=l
return ciphertext
#Example useage
plaintext="the cat sat on the mat"
print "Plaintext:", plaintext
print "Cipertext:", (caesar(plaintext,29))
cipertext只打印一个字母,而不是在caesar shift中打印“明文”变量。我要它把整个句子打印出来。在
谢谢
用它做得更好字符串.翻译:)
您需要修复return语句的缩进:
这是因为您的
return ciphertext
缩进错误。从for循环的第一次迭代返回。(缩进在Python中非常重要!)在把它固定到。在
^{pr2}$几个指针
alphabets = string.ascii_lowercase
。在dic[l]
,只需ciphertext += dic[l]
。在相关问题 更多 >
编程相关推荐