所以我刚刚开始使用Python /编码并编写了以下简单的脚本。
text = raw_input('Enter text: ') # get text
textr = text[::-1] # reverse the order
textl = [] # make it a list
for c in textr: # convert chr to ord
n = ord(c)
textl.append(n)
print str(textl)
因此,如果我输入'Ryan 123'
,则会输出列表'[51, 50, 49, 32, 110, 97, 121, 82]'
。
我无法弄清楚如何将字符串'51, 50, 49, 32, 110, 97, 121, 82'
转换回字符串'Ryan 123'
。
这是我试过的:
textn = raw_input('Enter text: ')
textl = map(int, textn.split(" ,"))
for i in textl:
n = chr(i)
textl.append(n)
print str(textl)
任何意见都会受到赞赏。
答案 0 :(得分:2)
您可以按list(text)
或其他任何内容将文字转换为字符列表,预期可迭代。
map
正在对iterable的每个项目应用一个函数:
>>> text = "Ryan 123"
>>> nums = map(ord, text)
>>> nums
[82, 121, 97, 110, 32, 49, 50, 51]
chr
将数字转换为字符
>>> chr(82)
'R'
对所有数字应用chr
会创建一个字符列表:
>>> map(chr, nums)
['R', 'y', 'a', 'n', ' ', '1', '2', '3']
要让所有角色都加入,请致电"".join
:
>>> "".join(map(chr, nums))
'Ryan 123'
答案 1 :(得分:0)
转换为ASCII值列表后,您反转了顺序。因此,您需要在转换回来时再次撤消订单:
>>> textl
[51, 50, 49, 32, 110, 97, 121, 82]
>>> text = []
>>> for i in textl:
... text.append(chr(i))
...
>>> text
['3', '2', '1', ' ', 'n', 'a', 'y', 'R']
>>> text.reverse()
>>> text
['R', 'y', 'a', 'n', ' ', '1', '2', '3']
>>>
<小时/> 您可以在两行中进行操作:
>>> text = "Ryan 123"
>>> text_ord = reversed(map(ord, text))
>>> text_back = reversed(map(chr, text_ord)) # returns an iterator
>>> "".join(text_back)
'Ryan 123'
答案 2 :(得分:0)
您正在循环并追加到同一列表textl
textn = raw_input('Enter text: ')
textl = map(int, textn.split(","))
s = [chr(i) for i in textl]
print "".join(reversed(s))