2016-02-06 2 views
3

Прежде всего я новичок в Python. Поэтому я сожалею, если мой вопрос кажется вам нелепым. Если у вас есть строковое значение, например:Что особенного в методе replace() в Python?

a = 'Hello 11' 

если вы напечатаете:

a[-1] = str(int(a[-1]) + 1) 

результат будет: '2'

но если вы печатаете:

a.replace(a[-1], str(int(a[-1]) + 1)) 

результатом будет:

'Hello 22' вместо 'Hello 12'

Почему это происходит?

+3

'а [-1] = ул (Int (а [-1]) + 1),' получите следующее сообщение об ошибке: 'TypeError : объект 'str' не поддерживает присвоение позиции' – Ren

ответ

8

Посмотрите части:

>>> a[-1] 
'1' 
>>> str(int(a[-1]) + 1) 
'2' 

Это означает:

>>> a.replace(a[-1], str(int(a[-1]) + 1)) 

делает это:

>>> a.replace('1', '2') 
'Hello 22' 

Он заменяет строку 1 строкой 2.

В строках Python неизменяемы. Таким образом, это:

>>> a[-1] = str(int(a[-1]) + 1) 

не работает:

TypeError: 'str' object does not support item assignment 
+0

Спасибо! Теперь все ясно. :) –

1

заменить выполняет операцию соответствия, а значение a[-1], то есть 1, сопоставляется 2 раза в строке

, если вы хотите заменить только последний символ:

a = a[:-1] + str(int(a[-1]) + 1) 
+0

Спасибо за ваш ответ! :) –

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