凯撒的Cipher使用python,可以使用一些帮助

2 python

我正在尝试使用python制作一个"Caesar's Cipher".这是我到目前为止所做的.谁能告诉我这是怎么回事?我正朝着正确的方向前进吗?我错过了什么?当我运行程序说例如(josh很酷)我没有得到同一行的密码.我这样看起来像这样main(3)

m
r
v
k
l
v
f
r
r
o
Run Code Online (Sandbox Code Playgroud)

但它把每个字母都放在一个新的界限上.我怎么能这样做它在一条线上?

def main(k):

    if k<0 or k>231:
        print "complaint"
        raise SystemExit

    Input = raw_input("Please enter Plaintext to Cipher")

    for x in range(len(Input)):
        letter=Input[x]
        if letter.islower():
            x=ord(letter)
            x=x+k
            if x>122:
                x=x-122+97
            print chr(x),
        if letter.isupper():
            x=ord(letter)
            x=x+k
            if x>90:
                x=x-90+65
            print chr(x),
Run Code Online (Sandbox Code Playgroud)

Nei*_*ass 6

我喜欢kaizer.se的答案,但我想我可以使用string.maketrans函数简化它:

import string

first = raw_input("Please enter Plaintext to Cipher: ")
k = int(raw_input("Please enter the shift: "))

shifted_lowercase = ascii_lowercase[k:] + ascii_lowercase[:k]

translation_table = maketrans(ascii_lowercase, shifted_lowercase)

print first.translate(translation_table)
Run Code Online (Sandbox Code Playgroud)