python string.split () и циклы - PullRequest
       4

python string.split () и циклы

0 голосов
/ 04 марта 2020

Disclaimer, я новичок в python Мне нужно разделить строку ввода, если отправить функцию, которая заменяет символ в строке с другим символом (например, шифр подстановки), но я просто не знаю, как go о это

print('Welcome to the encryption protocol for top secret governemt cover ups')
string=input('whats your message?')
def encrypt(string):
    alpha = "abcdefghijklmnopqrstuvwyz"
    sub_alpha = "pokmenliuytrwqazxcvsdfgbhn"

index=0
while index < len(string):
    letter=string[index]

я не совсем уверен, что я делаю, я действительно плохо себя чувствую на python, это поставило меня в тупик на 3 дня, теперь я просмотрел свой материал курса и попробовал видео на youtube, я, вероятно, просто очень тупой

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Я думаю, что ключевой элемент знаний, который вам не хватает, - это то, что строки можно повторять. Таким образом, вы можете делать такие вещи, как:

for c in "FOO":
    print(c)
    # prints "F\nO\nO\n"

И вы можете найти индекс символа в строке с помощью str.index . Таким образом, вы можете создать свой зашифрованный текст следующим образом:

alpha = "abcdefghijklmnopqrstuvwyz "
cypher = "pokmenliuytrw qazxcvsdfgbhn"
plaintext = "some string"
cyphertext = ""
for c in plaintext:
    char_index = alpha.index(c)
    cyphertext += cypher[char_index]

Вы также можете выполнять итерации по встроенным вещам - это называется понимание . Таким образом, для преобразования вашей строки вы можете сделать это вместо использования for l oop:

cyphertext = "".join(cypher[alpha.index(c)] for c in plaintext)

В приведенном выше примере функция str.join используется для объединения каждого символа Шифротекст.

0 голосов
/ 04 марта 2020

Вот решение, которое задает вопрос, а затем перебирает каждую букву, находит индекс в альфа-ключе и заменяет его эквивалентом ключа sub_alpha. Обратите внимание, этот пример также проверяет, должен ли он быть строчным или прописным. РЕДАКТИРОВАТЬ: если входной символ не имеет действительного шифра, он не будет изменен. РЕДАКТИРОВАТЬ 2: расширенный ответ для преобразования вперед и назад.

alpha = "abcdefghijklmnopqrstuvwyz"
sub_alpha = "pokmenliuytrwqazxcvsdfgbhn"

def encrypt(in_char):   
    is_lower_case = in_char.islower()
    index = alpha.find(in_char.lower())

    if index < 0:
        return in_char
    elif is_lower_case:
        return sub_alpha[index]
    else:
        return sub_alpha[index].upper()

def decrypt(in_char):
    is_lower_case = in_char.islower()
    index = sub_alpha.find(in_char.lower())

    if index < 0:
        return in_char
    elif is_lower_case:
        return alpha[index]
    else:
        return alpha[index].upper()

print('Welcome to the encryption protocol for top secret governemt cover ups')
input_str=input('whats your message? ')
output_str=""

for letter in input_str:
    output_str += encrypt(letter)

print("Encrypted: ")
print(output_str)

input_str=""
for letter in output_str:
    input_str+= decrypt(letter)

print("Decrypted: ")
print(input_str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...