Python: функция для преобразования строки в int - PullRequest
0 голосов
/ 22 сентября 2018

Доброе утро всем!Я новичок в программировании и изучаю Python.Я пытаюсь создать функцию, которая преобразует каждый отдельный символ в строке в каждый соответствующий индивидуальный массив и отображает их один за другим.Первая ошибка, которую он генерирует: «c не определено».

c=''
def encode(secret_message):
    for c in secret_message:
        int_message=+ord(c)
    return int_message

Example of what I want it to do:
secret_message='You' (this is a string)
return: 89 111 117    (this should be an int, not a list)
note: 'Y'=89, 'o'=111, 'u'=117

Идея состоит в том, что кодирование принимает секретное сообщение параметра.Затем он перебирает каждый символ в c и преобразует каждый символ из строки в int.Затем он возвращает все сообщение в целых числах.

Я также не уверен, как заставить каждый символ появляться в int_message.На данный момент, похоже, он сложит все целые.Я хочу, чтобы они просто помещались вместе (как строка).Нужно ли преобразовывать его обратно в строку после получения значений int и конкатенации?

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Это должно делать то, что вы хотите:

def encode(s):
    return int(''.join([str(ord(char)) for char in s]))

Или это:

def encode_2(s):
    return int(''.join(map(str, [ord(char) for char in s])))
0 голосов
/ 22 сентября 2018

Я не знаю, почему вы получаете сообщение об ошибке, что c не определено, но вам нужно внести в код лишь пару изменений.

def encode(secret_message):
    message = ""
    for c in secret_message:
        message += str(ord(c))
    int_message = int(message)
    bin_message = bin(int_message)
    return bin_message
  • Вам нужноначать с установки сообщения равным пустой строке, прежде чем начать добавлять значения к нему.Это потому, что вам не разрешено добавлять значения в несуществующую переменную.
  • Используйте += вместо =+.
  • Перед добавлением ord (c) к сообщению, онодолжен быть преобразован в строку.Это связано с тем, что сложение двух целых чисел будет выполнять арифметику, но сложение двух строк вместе приведет к их объединению (объединению).
  • Отсюда нам просто нужно преобразовать все в двоичный код.Мы не можем преобразовать строку непосредственно в двоичный файл, поэтому сначала преобразуем в целое число, а затем в двоичный.Для этого можно использовать функции int и bin .
0 голосов
/ 22 сентября 2018

Вот пример того, как это сделать, я бы предложил не возвращать закодированное сообщение как list, но вы должны превратить сообщение в list, чтобы получить отдельные символы, вернуть его как stringно оставьте пробелы для разделения кода или у вас будет один длинный номер, который вы не сможете интерпретировать обратно, затем, когда вы декодируете сообщение, вы можете ввести его как 84 105 102 102 97 110 121, а затем разделить это и декодировать отдельный ints

def encode(s):
    s = [str((ord(i))) for i in list(s)]
    return ' '.join(s)

def decode(s):
    s = [(chr(int(i))) for i in s.split()]
    return ''.join(s)

print(encode('Tiffany'))
print(decode('84 105 102 102 97 110 121'))
~/python/stack/sept/twenty_2$ python3.7 alice.py
84 105 102 102 97 110 121
Tiffany
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...