2015-10-03 4 views
4

Я новичок в программировании и я имел некоторые трудности с пониманием логики за Python «для» примера реализации цикла я наткнулся на:Python 2.7: Simple «для» реализации петли

s="abcdefg" 
t="" 
for a in s: 
    t=a+t 

Я запутался, почему этот кусок кода возвращает «gfedcba». Почему он не должен отличаться от:

s="abcdefg" 
t="" 
for a in s: 
    t=t+a 

... который возвращает «abcdefg».

+0

один ставит символ в конце, другой ставит его спереди, если вы печатаете в цикле, должно быть довольно ясно –

+1

Хороший вопрос, я не знал, что может изменить строку следующим образом: P. И, кстати, это также будет работать на Python 3. –

ответ

5

Следуйте логике, как это:

s="abcdefg" 
t="" 

Эти исходные переменные, теперь позволяет «разворачивать» Петля для. Имейте в виду, что «а» означает каждый символ «х», от первого до последнего:

t = a + t 

так т = «а»

t = a + t 

так т = «ба»

t = a + t 

так т = "CBA"

конкатенация не походит на дополнение. Вопросы для заказа!

1

Петли for в обоих фрагментах идентичны. Разница заключается в том, что вы делаете с t. Первый фрагмент добавляет символ a перед строкой t на каждой итерации, эффективно меняя исходную строку s. Второй фрагмент добавляет характер a в конце строк t в каждой итерации, эффективно повторно создать исходную строку s

5

В сущности, вы спрашиваете, почему a + t и t + a не эквивалентны.

Здесь + обозначает string concatenation, а не addition и конкатенация не commutative:

>>> "a" + "b" 
'ab' 
>>> "b" + "a" 
'ba' 

Один из способов думать о своем коде, что

t = a + t 

вставки a в передней части t , тогда как

t = t + a 

вставляет его сзади.

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