2015-11-05 2 views
0

Я полный Newb программист и у меня возникает проблемы при получении введенного пользователема списка 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 (ввод («Пожалуйста, введите свою ASCII-треску е: "))
  • ascii_code = Eval (вход (" Пожалуйста, введите код ASCII: "))

Я получаю либо TypeError: требуется целое (есть тип строка) или TypeError: 'INT' объект не является итерируемым.

Любая помощь была бы высоко оценена!

+0

что вы хотите ввести в течение 'input' позвонить? –

+0

Список кодов ASCII, таких как: 109, 121, 32, 110, 97, .. и т. Д. – Slazbian

+0

ну, вы получите строку от ввода, так что просто свяжитесь со ст ... читать на раскол и полосу, возможно? и затем все, что вы получили от этого? – user3012759

ответ

0

Результат, полученный вами от input(), является либо кортежем (python 2, поэтому используйте raw_input(), чтобы получить правильное поведение), либо строку (python 3). Я предполагаю, что вы используете Python 3 или переключитесь на использование raw_input, потому что input в Python 2 - это просто плохая практика.

Результат, полученный от пользователя, представляет собой строку, разделенную запятой. Вам нужно разбить эту строку на части, которые вы можете сделать с .split(','):

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

Однако вы заметите, что номера в списке: 1) строки, а не Ints, и 2) имеют пробелы вокруг них. Мы можем исправить это с помощью цикла по числам и с помощью .strip(), чтобы удалить пробелы и int() преобразовать зачищенный строку в число, которое можно передать в chr():

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

... но это больше Pythonic сделать это с список понимание:

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

Смежные вопросы