2016-12-30 3 views
1

Я задаюсь вопросом, почему я эту ошибку, когда я запускаю этот код:AttributeError: «INT» объект не имеет атрибута «заменить»

# Ask user input 
# Find out network device id for network device with ip or hostname, index 3 is device id 
# In the loop until 'id' is assigned or user select 'exit' 
id = "" 
device_id_idx = 3 
while True: 
    user_input = input('=> Select a number for the device from above to show IOS config:') 
    user_input= user_input.replace(" ","") # ignore space 
    if user_input.lower() == 'exit': 
     sys.exit() 
    if user_input.isdigit(): 
     if int(user_input) in range(1,len(device_show_list)+1): 
      id = device_list[int(user_input)-1][device_id_idx] 
      break 
     else: 
      print ("Oops! number is out of range, please try again or enter 'exit'") 
    else: 
     print ("Oops! input is not a digit, please try again or enter 'exit'") 
# End of while loop 

вывода ошибка:

user_input= user_input.replace(" ","") # ignore space 
AttributeError: 'int' object has no attribute 'replace' 

Этот код предполагается принять входную и обратную информацию. Заранее спасибо!

+1

Вы используете Python 2.x, где 'input()' оценивает то, что пользователь вводит как выражение Python. Так как пользователь набрал целое число, вы получите 'int', а не' str'. Вместо этого используйте 'raw_input()', и вы всегда получите строку. – kindall

+0

Я бы посоветовал вам опубликовать полный код с операторами импорта. – Eddie

ответ

0

Если вы используете Python3.x input возвращает строку, вы можете попробовать выполнить отладку кода, чтобы проверить тип user_input или

print(type(user_input)) 

Если вы используете Python2.x input, может быть, это не является хорошим способом для вашего кода , потому что функция input оценивает ваш вход. Если ваш ввод 1 2, вы получите SyntaxError: invalid syntax, а если ваш ввод 1, он получит int объект, вот почему вы получили сообщение об ошибке.

Я предлагаю raw_input, потому что raw_input принимает именно то, что пользователь вводил и передает его обратно в виде строки.

Вы можете прочитать this

Надеются, что это помогает.

+0

Спасибо всем. Я сейчас работаю –

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