Это мое задание:Расшифровка ввода?
Написать программу, которая ДЕКРИПТЕТ секретные сообщения.
Сначала следует запросить пользователя для скремблированного алфавита. Затем он должен запросить секретное сообщение. Наконец, он выводит версию без расшифровки.
Обратите внимание, что для скремблированного алфавита имеется ровно 26 символов. Все алфавитные символы переводятся в их декодированные эквиваленты (которые будут проходить цикл WHILE), а все другие, неалфавитные символы должны выводиться точно так же, как они были без перевода.
Это мой код до сих пор:
decrypt = ["*"] * 26
scram_alphabet = input("Please input the scrambled alphabet in order: ")
while len(scram_alphabet) != 26:
scram_alphabet = input("Please input the scrambled alphabet in order. The alphabet must have 26 characters: ")
num = 0
for each_letter in scram_alphabet:
decrypt[num] = ord(each_letter)
num = num + 1
print()
print("Your scrambled alphabet is: ", end = "")
for num in range (26):
print(chr(decrypt[num]), end = "")
print()
print()
msg = input("Now input your scrambled message: ")
print()
print()
alphabet = 65
for s in range (26):
decrypt[s] = (alphabet)
alphabet = alphabet + 1
print("The unscrambled alphabet is: ", end = "")
for num in range (26):
print(chr(decrypt[num]), end = "")
print()
print()
print("Your unscrambled message reads: ")
for alpha in msg.upper():
if alpha < "A" or alpha > "Z":
print(alpha, end="")
else:
ord_alpha = ord(alpha)
print (chr(decrypt[ord_alpha - 65]), end = "")
Ex: Яичница алфавит = XQHAJDENKLTCBZGUYFWVMIPSOR, Яичница сообщение = VNKW KW BO 1WV WJHFJV BJWWXEJ!
Все работает нормально до тех пор, пока не дойду до последнего оператора печати, где говорится, что сообщение с расшифровкой является тем же самым, что и скремблированное сообщение. Я знаю, что инструкции требуют цикла while, но я не мог понять, как использовать его для декодирования алфавита.
Любые помощники?
для чего это стоит (и дать вам то, чтобы проверить против), это довольно длинный 2-лайнер (один если вы не считаете импорт): 'str.translate ('VNKW KW BO 1WV W JHFJV BJWWXEJ! ', String.maketrans (' XQHAJDENKLTCBZGUYFWVMIPSOR ', string.ascii_uppercase)) ' – mgilson
Подсказка: в третьем цикле' for' вы полностью перезаписываете содержимое массива 'decrypt []', игнорируя ранее введенный скремблированный алфавит ... – Stobor
@Stobor: Не возражаете ли вы разработать? Я не уверен, что вы имеете в виду, я снова решил расшифровать = [0] * 26 и распечатать все пробелы -> "1!" – user2680935