Две строки, и напечатаны введенные буквы, что содержится в другой строке - PullRequest
0 голосов
/ 17 января 2020

Не уверен, имеет ли заголовок смысл или действительно, как сформулировать вопрос, но я пытаюсь сделать так, чтобы пользователь вводил предложение за высказывание, а затем оно извлекало бы из другой строки в соответствии с любым индексом, который буква is и выведите ее в новую строку, затем напечатайте строку.

Возможно, это более простой способ, но если бы вы могли объяснить этот способ и более простой, который был бы классным, возможно, вы поймете, как только увидите код.

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




print(new_string)

Ответы [ 2 ]

5 голосов
/ 17 января 2020

Используйте str.translate и str.maketrans:

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

Например:

>>> "hello, world".translate(str.maketrans(abc, caesar_cipher))
'ifmmp, xpsme'
1 голос
/ 17 января 2020

Я думаю, что вы хотите реализовать шифр Caeser. Если вы посмотрите, что такое шифр Ceaser, он просто сдвигает каждый символ на фиксированное количество символов. В вашем примере все «а» заменены на «b», «b» на «c» и т. Д. Просто базовую 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 обратно в символ приведет к получению символа, который не находится в диапазоне [az]. Чтобы сделать это, мы должны были сделать этот безобразный взлом оператора модуля. ПРИМЕЧАНИЕ. Это будет работать только для маленьких букв (az). Надеюсь, это поможет.

...