#python #encryption
Вопрос:
def encrypted(message):
encrypted=' '
for i in message:
if (i%2==0):
num = ord(message[i])
num = 2
encrypted = message[num]
else:
num = ord(message[i])
num = 1
encrypted = message[num]
return encrypted
def decrypted(message):
decrypted = ' '
for i in message:
if (i%2 == 0):
num = ord(message[i])
num -= 2
decrypted = message[num]
else:
num = ord(message[i])
num -= 1
decrypted = message[num]
return decrypted
def main():
message = str(input("Enter the message: "))
encrypted_msg = encrypted(message)
print("Encrypted message:", encrypted_msg)
decrypted_msg = decrypted(encrypted_msg)
print("Decrypted message:", decrypted_msg)
print("Original message:", message)
if __name__ == '__main__':
main()
Чего я хочу добиться: это грядущая ошибка. Я хочу зашифровать и расшифровать символы в зависимости от их положения в сообщении, находятся ли они в нечетных или четных местах. что мне делать?
if (i%2==0):
Error: TypeError: not all arguments converted during string formatting
Комментарии:
1.
%
означает что-то другое, когда применяется к строке, чем когда применяется к целому числу.2.
i
это буква, вы хотите проверить ее индекс в строке. Вы, вероятно, захотите использоватьenumerate()
.3. Не очевидно, что ваша функция шифрования обратима. (По крайней мере, вы хотите добавить к
encrypted
,encrypted = message[num]
.)4. Функция @ThierryLathuille enumerate() выдает ошибку: ошибка типа: неподдерживаемые типы операндов для %: «перечислять» и «int».
5. Да, но даже если вы это сделаете , я не уверен, что вы сможете однозначно расшифровать полученное сообщение. Похоже, что два разных символа в одной и той же позиции могут быть сопоставлены одному и тому же символу.