Python:Text to ASCII& ASCII到文本转换器程序

时间:2010-08-17 18:12:21

标签: python ascii

我是python 2.7的新手,尝试创建一个简单的程序,它从用户获取输入字符串,将所有字符转换为其ascii值,将所有ascii值加2,然后将新值转换为文本。因此,例如,如果用户输入为“test”,则输出应为“vguv”。

这是我到目前为止编写的代码:

message = input("enter message to encode")

for ch in message:
     message2 = ord(ch) + 2
     print "\n\n"
     encodedmessage = ""
     for item in message2.split():
            encodedmessage += chr(int(item))

print ("encoded msg in text : "), encodedmessage

它似乎没有正常工作,任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:2)

message2 = ord(ch) + 2使message2成为一个整数,因此你当然不能在其上调用split - 它是一个表示单个字符的int,为什么你想要< em>拆分吗?!另外,每次循环时你都会将encodedmessage重置为空字符串,所以一旦你修复了split怪异(只需删除它!),你就会看到最后一个被删除的字符串。课程;将encodedmessage = ''移到之前循环。

答案 1 :(得分:1)

你正在混淆角色和字符串。循环遍历字符串(例如“message”)时,在每次迭代时,您将获得一个字符。另外,ord(ch)是一个整数,一个数字,所以你不能“拆分”它。

另外,不要使用“input”,而是使用“raw_input”。

你想要的可能是类似的东西:

message = raw_input("enter message to encode: ")
encoded_message = ""
for ch in message:
     encoded_ord = ord(ch) + 2

这里你还没有新的消息,因为循环一次给你一个字符,所以我将变量重命名为“encoded_ord”,这更好地描述了它的含义。

现在,您可以将此“编码的ord”转换为编码字符,并将其添加到编码消息中:

     encoded_ch = chr(encoded_ord)
     encoded_message += chr(encoded_ch)

print "encoded msg in text:", encodedmessage

答案 2 :(得分:1)

您是否尝试执行rot-13(或通用“rot-x”)类型的功能?

from string import ascii_uppercase, ascii_lowercase

def rotx(data,rotby):
    total = []
    for char in data:
        if char in ascii_uppercase:
            index = (ascii_uppercase.find(char) + rotby) % 26
            total.append(ascii_uppercase[index])
        elif char in ascii_lowercase:
            index = (ascii_lowercase.find(char) + rotby) % 26
            total.append(ascii_lowercase[index])
        else:
            total.append(char)
    return "".join(total)

运行:

>>> import rotx
>>> rotx.rotx("test",2)
'vguv'
>>> rotx.rotx("IBM-9000",-1)
'HAL-9000'

如果您将2添加到ASCII字符,}变为不可打印,~会变成某些内容,具体取决于您的字符编码