Поиск по этому блогу

понедельник, 17 февраля 2020 г.

С27 задача 22 на Питоне

На вход программе подается строка (длиной не более 200 символов), в которой нужно зашифровать все английские слова (словом называется непрерывная последовательность английских букв, слова друга от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Строка заканчивается символом #, других символов # в строке нет. Каждое слово зашифровано с помощью циклического сдвига на длину этого слова. Например, если длина слова равна K, каждая буква в слове заменяется на букву, стоящую в английском алфавите на K букв дальше (алфавит считается циклическим, то есть, за буквой Z стоит буква A). Строчные буквы при этом остаются строчными, а прописные – прописными. Символы, не являющиеся английскими буквами, не изменяются.
Требуется написать программу, которая будет выводить на экран текст зашифрованного сообщения. Например, если исходный текст был таким:

Day, mice. "Year" is a mistake#

то результат шифровки должен быть следующий:

Gdb, qmgi. "Ciev" ku b tpzahrl#

Решение
def kod(m):
    nm=''
    d=0
    for i in range(len(m)):
        p=ord(m[i])
        if (p>64 and p<91) or (p>96 and p<123):
            d+=1
    for u in range(len(m)):
        p=ord(m[u])
        if (p>64 and p<91):
            g=p+d
            if g>91:
                g=64+(g-90)
        elif (p>96 and p<123):
            g=p+d
            if g>122:
                g=96+(g-122)
        else:
            g=p  
        nm+=chr(g)
    return nm
c=input()
n=''
nn=''
l=c.count(' ')

for i in range(l):
    if l>0:
        po=c.index(' ')
        s=c[:po]
        c=c[po+1:]
        k=0
        nn='' 
    else:
        s=c
        k=0
    n=n+' '+kod(s)
n=n+' '+kod(c)
print(n)

Комментариев нет:

Отправить комментарий