Я пытаюсь получить ввод от пользователя и, используя методы строкового модуля, хочу перевести ввод в зашифрованный текст в соответствии с кодом.
Я пробовал одно и то же три раза, и все равно получаю сообщение об ошибке: "ValueError: первые два аргумента maketrans должны иметь одинаковую длину"
Хотя в моем коде я уже проверил длину, и оба оказались одинаковыми.
Я использую Python 3.x
# Trial 3
import string
in_text = string.ascii_lowercase
out_text = (string.digits * 2) + string.digits[0:6]
print(len(in_text))
print(len(out_text))
translated_text = str.maketrans(usr_in, usr_out)
my_str = input().lower()
print(my_str.translate(translated_text))
Я ожидаю, что результатом будет текст, который сопоставляет ascii с числами, и всякий раз, когда я ввожу строку, я получаю зашифрованный вывод.
Вы используете неправильные переменные в своем вызове str.maketrans
...
Если я правильно вас понял, вы хотите сопоставить младшие ascii с цифрами
вы должны сделать это так
import string
in_text = string.ascii_lowercase
out_text = string.digits * 2 + string.digits[0: 6]
translated_text = str.maketrans(in_text, out_text)
my_str = input().lower()
print(my_str.translate(translated_text))
ВЫХОД:
λ python3 s.py
hello, world
74114, 24713
Но как только код будет зашифрован в числа, если я попытаюсь составить то же самое предложение, которое я ввел снова, из сгенерированных чисел, я не смогу этого сделать.
@AbhinandanSharma Конечно, вы не можете этого сделать, потому что вы сопоставляете разные символы с одними и теми же цифрами ... это ваше «шифрование» необратимо.
@Aran-Fey Спасибо, что прокомментировали и дали мне знать ответ. Ваш ответ высоко ценится.
где вы определили usr_in, usr_out?