两个字符串,并且输入的字母打印在另一个字符串中

时间:2020-01-17 19:34:48

标签: python python-3.x string input

不确定标题是否有意义,或者真的如何用词表达问题,但是我想做的是用户输入一个逐句的句子,然后它将根据该索引从另一个字符串中获取letter is并将其打印到新字符串,然后打印字符串。

可能是一种更简单的方法,但是如果您能以这种方式进行解释,并且更容易冷却,那么一旦您看到代码,便会理解。

abc = "abcdefghijklmnopqrstuvwxyz"
caesar_cipher="bcdefghijklmnopqrstuvwxyza"
user = input("Enter what you want ciphered: ")
new_string = ''




print(new_string)

2 个答案:

答案 0 :(得分:5)

使用str.translatestr.maketrans

new_string = user.translate(str.maketrans(abc, caesar_cipher))

例如:

>>> "hello, world".translate(str.maketrans(abc, caesar_cipher))
'ifmmp, xpsme'

答案 1 :(得分:1)

我认为您想要的是实施Caeser密码。如果您观察什么是Ceaser密码,它只会将每个字符移动固定数量的字符。在您的示例中,所有“ a”都将替换为“ b”,“ b”将替换为“ c”,依此类推。只需使用示例的基本版本即可完成此操作:

def encode_using_ceaser_cipher(input):
    output = ''
    for c in input:
        output += chr((ord(c) + 1)% (26 + 97))
    return output


    abc = "abcdefghijklmnopqrstuvwxyz"
    user = input("Enter what you want ciphered: ")
    new_string = encode_using_ceaser_cipher(input)
    print(new_string)

了解此行的作用

output += chr((ord(c) + 1)% (26 + 97))

我们将存储在c中的字符转换为其ascii值,将其递增1,然后使用chr将其转换回字符。但是,以这种方式将“ z”转换回字符时,将导致获得不在[a-z]范围内的字符。为此,我们必须对模运算符进行这种丑陋的修改。注意:这仅适用于小写字母(a-z)。 希望这会有所帮助。

相关问题