不确定标题是否有意义,或者真的如何用词表达问题,但是我想做的是用户输入一个逐句的句子,然后它将根据该索引从另一个字符串中获取letter is并将其打印到新字符串,然后打印字符串。
可能是一种更简单的方法,但是如果您能以这种方式进行解释,并且更容易冷却,那么一旦您看到代码,便会理解。
abc = "abcdefghijklmnopqrstuvwxyz"
caesar_cipher="bcdefghijklmnopqrstuvwxyza"
user = input("Enter what you want ciphered: ")
new_string = ''
print(new_string)
答案 0 :(得分:5)
使用str.translate
和str.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)。 希望这会有所帮助。