python - 使用 python 的凯撒密码,需要一点帮助

标签 python

我正在尝试使用 python 制作“Caesar's Cipher”..这就是我目前所拥有的。谁能告诉我这看起来怎么样?我正朝着正确的方向前进吗?我错过了什么?当我运行程序说例如(乔希很酷)时,我没有在同一行上得到密码。当我执行 main(3)

时看起来像这样
m
r
v
k
l
v
f
r
r
o

但它会将每个字母放在一个新行上。我怎样才能让它在一条线上?

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),

最佳答案

我喜欢 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)

关于python - 使用 python 的凯撒密码,需要一点帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538935/

相关文章:

python - 对于列表中的元组,如果元组的第三个元素在字典中,则将该元素替换为值

python - 如何取回被覆盖的python内置函数?

python - 带有隐藏窗口的跨平台子进程

python - 逼近大型对称矩阵的最高 3 个特征值和特征向量的快速方法

python - 箭头键、home 和 end 在 django 终端中不起作用

python - 'list index out of range' 怎么样?

python - 类型错误 : ufunc 'subtract' did not contain a loop with signature matching types dtype ('<U8' ) dtype ('<U8' ) dtype ('<U8' )

python - 如何删除shutil.rmtree中未使用的函数参数

python - 如何对不同长度的 "identical"字符串进行 GROUP BY?

python - 使用 QWebEngine 在同一窗口中打开任何链接(甚至_blank)