2015-11-05 36 views
0

我是一个完整的福利局程序员的清单时遇到麻烦的ASCII码的用户输入列表打印为字符的列表:打印的ASCII码的输入列表作为字符

ascii_code = [109, 121, 32, 110, 97, 109, 101, 32, 105, 115, 
      32, 106, 97, 109, 101, 115] 

#ascii_code = input("Please input your ASCII code:") 

character_list = list() 
for x in ascii_code: 
    character_list.append(chr(x)) 

print (character_list) 

['m', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'j', 'a', 'm', 'e', 's'] 

为你可以看到,当ASCII表是预先定义的程序工作(在第一行代码),但是当我尝试运行的输入,如:

  • ascii_code =输入(“请输入您的ASCII码”)
  • ascii_code = int(input(“请输入你的ASCII码E: “))
  • ascii_code =的eval(输入(” 请输入您的ASCII码“))

我得到两种类型错误:需要一个整数(有型STR)或类型错误: '诠释'对象不可迭代。

任何帮助将不胜感激!

+0

什么你想在'input'来电类型? –

+0

ASCII代码列表,如:109,121,32,110,97,..等 – Slazbian

+0

好吧,你从输入得到一个str,所以只需处理str ...在拆分和strip也许读?然后int从你那里得到什么? – user3012759

回答

0

input()得到的结果是一个元组(python 2,所以使用raw_input()来获得正确的行为)或一个字符串(python 3)。我假设你正在使用Python 3或将切换到使用raw_input,因为在Python 2中的input只是不好的做法。

从用户获得的结果是逗号分隔的字符串。你需要打破串入部分,你可以做.split(',')

>>> s = raw_input('Enter ASCII codes:') 
Enter ASCII codes: 1, 2, 3, 4, 5 
>>> s.split(',') 
[' 1', ' 2', ' 3', ' 4', ' 5'] 

但是你会发现,在列表中的数字是1)字符串,而不是整数,和2)在其周围空间。我们可以通过遍历的数量和使用.strip()去除空白和int()解决这个问题的剥离字符串向数字,我们可以传递给chr()转换:

character_list = [] 
for p in s.split(','): 
    character_list.append(chr(int(s.strip()))) 

...但它有更Python做到这一点列表理解:

character_list = [ chr(int(p.strip())) for p in s.split(',') ] 

因此,最终的代码最终会如:

>>> s = raw_input('Enter ASCII codes: ') 
Enter ASCII codes: 65, 66, 67 
>>> character_list = [ chr(int(p.strip())) for p in s.split(',') ] 
>>> print(character_list) 
['A', 'B', 'C'] 
+0

太好了,解决了它。是的,使用Python 3。 – Slazbian