Python:将字符串转换为int的函数

时间:2018-09-22 17:22:05

标签: python string function int

大家早上好! 我是编程新手,正在学习python。我正在尝试创建一个函数,将字符串中的每个单个char转换为每个相应的int并逐个显示它们。它产生的第一个错误是“未定义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格式返回整个消息。

我也不确定如何使每个字符都出现在int_message中。截至目前,它似乎将所有int加在一起。我希望它只是将它们放在一起(像一个字符串)。获得int值然后进行连接后,是否需要将其转换回字符串?

3 个答案:

答案 0 :(得分:0)

这是一个示例,我建议不要将编码后的消息作为list返回,但是您应该将消息转换为list以获取各个字符,并以string,但留出空格以分隔代码,否则您将无法解释回一个长数字,然后在解码消息时,可以将其输入为84 105 102 102 97 110 121,然后将其拆分并解码单个{ {1}}

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'))

答案 1 :(得分:0)

这应该做您想要的:

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])))

答案 2 :(得分:0)

我不知道为什么您没有得到关于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)之前,需要将其转换为字符串。这是因为将两个整数加在一起将执行算术运算,但是将两个字符串加在一起会将它们混淆(连接)在一起。
  • 从这里开始,我们只需要将所有内容都转换为二进制即可。我们不能将字符串直接转换为二进制,因此我们先转换为整数,然后再转换为二进制。 intbin函数可用于此目的。