2016-03-09 5 views
-4

Требования находятся внизу, мой код находится чуть ниже. Пожалуйста, скажите мне, что я сделал, чтобы я мог учиться на своих ошибках, я, похоже, не могу обернуть голову вокруг этого вопроса!Нужна помощь по исправлению моего кода в соответствии с требованиями

мой текущий код

KEYPAD = { 
    '0': '', 
    '1': 'a', 
    '2': 'b', 
    '3': 'c', 
    '4': 'd', 
    '5': 'e', 
    '6': 'f', 
    '7': 'g', 
    '8': 'h', 
    '9': 'i', 
    '10': 'j', 
    '11': 'k', 
    '12': 'l', 
    '13': 'm', 
    '14': 'n', 
    '15': 'o', 
    '16': 'p', 
    '17': 'q', 
    '18': 'r', 
    '19': 's', 
    '20': 't', 
    '21': 'u', 
    '22': 'v', 
    '23': 'w', 
    '24': 'x', 
    '25': 'y', 
    '26': 'z', 
} 

code = int(input("Enter code: ")) 

for i in range(code): 

modulus = code%26 

dictionary = str(modulus) 

print(KEYPAD[dictionary]) 

По какой-то причине этот код не работает на то, что я хочу, чтобы это сделать. Вот мои требования;

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

Вы хотите, чтобы иметь возможность расшифровывать сообщения, отправленные вам другом, который сказал вам, что использует вариант простого шифрования замещения буквенного номера. В ее шифре каждая буква представлена ​​числом, с 1 = a, 2 = b и т. Д. С 26 = z. Оттуда, однако, шифр продолжается так, что 27 = a, 28 = b и т. Д., Позволяя ей использовать любое положительное число для представления одной из 26 букв алфавита. Когда она использует 0, она должна быть расшифрована до пробела. Она будет использовать только 0 и положительные числа в своем шифре.

Вам необходимо написать программу, которая будет принимать как одну строку ввода всей закодированной строки, причем каждое число разделяется одним пробелом. Ваша программа должна работать, как показано в примерах ниже:

код: 2 1 4 3 1 0 20 плохой кот Другой пример:

Введите код: 27 3 31 0 9 14 0 46 34 5 0 8 41 12 31 ace in the hole Подсказка Возможно, вам захочется подумать о том, как операция модуля (%) может быть полезна для этого вопроса.

+0

Почему вы выбрали 'int'' input'? – Idos

+0

Это моя проблема? – Outreach

+1

Многие проблемы, кроме этого – Idos

ответ

0

Следующий код должен работать. Код основывается на вашем другом сообщении в https://stackoverflow.com/questions/35906766/wont-accept-low-numbers.

initial = input("Enter code: ") 

splitter = (initial.strip()).split(" ") 

coder1 = [] 
for i in splitter: 
    if (int(i) == 0): 
     coder1.append("*") 
    else: 
     coder1.append(int(i)%26) 

coder2 = [str(i) for i in coder1] 

cipher = ' '.join(coder2) 

cipher = cipher.replace("10", "j") 
cipher = cipher.replace("11", "k") 
cipher = cipher.replace("12", "l") 
cipher = cipher.replace("13", "m") 
cipher = cipher.replace("14", "n") 
cipher = cipher.replace("15", "o") 
cipher = cipher.replace("16", "p") 
cipher = cipher.replace("17", "q") 
cipher = cipher.replace("18", "r") 
cipher = cipher.replace("19", "s") 
cipher = cipher.replace("20", "t") 
cipher = cipher.replace("21", "u") 
cipher = cipher.replace("22", "v") 
cipher = cipher.replace("23", "w") 
cipher = cipher.replace("24", "x") 
cipher = cipher.replace("25", "y") 
cipher = cipher.replace("1", "a") 
cipher = cipher.replace("2", "b") 
cipher = cipher.replace("3", "c") 
cipher = cipher.replace("4", "d") 
cipher = cipher.replace("5", "e") 
cipher = cipher.replace("6", "f") 
cipher = cipher.replace("7", "g") 
cipher = cipher.replace("8", "h") 
cipher = cipher.replace("9", "i") 
cipher = cipher.replace("0", "z") 

lister = list(cipher) 
if (len(lister) == 0): 
    print ("invalid input") 
elif (len(lister) == 1): 
    final = ''.join(lister) 
    final = final.replace("*", " ") 
    print(final) 
else: 
    while " " in lister: 
     final = lister.remove(" ") 
     final = ''.join(lister) 
     final = final.replace("*", " ") 
    print(final) 
+0

Всякий раз, когда вводится «26», он дает мне 0, так или иначе, чтобы исправить это? – Outreach

+0

Я обновил код. Пожалуйста попробуйте! – Yunhe

+0

Если мой ответ помог вам, подумайте о том, чтобы отметить его как правильный ответ, нажав на серый флажок под подсчетом голосов – Yunhe

0

Я выяснил, почему это не работает! Если вы вводите только одно число, оно работает отлично. Проблема в том, что python не может преобразовать строки в целые числа, когда в строке есть несколько чисел. Кроме того, его трудно исправить, потому что нет максимума цифр, soyou cant sa, возьмите это и преобразуйте его в int. К несчастью, я не очень разбираюсь в этом и относительно новичок в python. Извините за мой плохой английский, я немецкий.

+0

Я думаю, что вы правы, есть ли у вас какие-либо альтернативные исправления для достижения моего требования? – Outreach

Смежные вопросы