2016-02-15 4 views
0
def reverse(text): 
    length = len(text) 
    length -= 1 
    a = '' 
    for pos in range(length/2): 
     a[pos] = text[length] 
     text[pos] = a[pos] 
     length -= 1 
    print text 

В то время как я был кодирование в Codecademy я ввел этот код и обнаружил ошибку, которая:Реверсивные строки в Python с помощью задания строк

Несет ли ваша обратная функция ровно один аргумент (строка)? Ваш код выбросил ошибку «'str' object not support item assign".

какой шаг я делаю неправильно? как действовать без использования .join() или любого встроенного?

+0

строки ** неизменяемый **, вы не можете назначить символ по индексу. – jonrsharpe

+0

строки неизменяемы, поэтому вы не можете использовать присваивание, как и список, почему бы не просто перейти к 'a', начиная с диапазона len (s) вниз? –

+0

Похоже, вы ожидаете, что это будет замена символов в вашей строке; даже если строки были изменчивыми, это не выполнило бы этого. –

ответ

0

Строки неизменяемы, вы должны создать новый.

Try:

def reverse(text): 
    length = len(text) 
    a = '' 
    for pos in range(length): 
     a += text[length-pos-1] 
    print a 
0

Как я прокомментировал строки как неизменное и не поддерживают назначение в качестве изменчивой структуры, как список делает, вы можете использовать диапазон, начиная от длины строки -1 до 0 и Concat каждый символ вашей строки:

def reverse(text): 
    length = len(text) - 1 
    a = '' 
    for pos in range(length,-1,-1): 
     a += text[pos] 
    return a 
1

это так просто, как это:

text[::-1] 
+0

Мне не разрешено использовать [:: -1] или обратный сир – Mann

+0

Простое решение без нарезки или встроенных функций: result = ''; для c в тексте: результат = c + результат –

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