функция для печати текста инвертированным (цикл for) - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу сделать функцию, которая возвращает инвертированный текст.Проблема здесь в том, что 'x' не хранит перевернутый текст, я не знаю почему.

ЭТО КОДЕКС

def text_inverted(w):

    for i in range(len(w)-1,-1,-1):
        x=""
        x+=w[i]
    return x

print(text_inverted("hello"))

Ответы [ 5 ]

0 голосов
/ 20 сентября 2018

Как упоминалось в других ответах, вы не должны устанавливать переменную x внутри цикла for;просто инициализировать вне этого.

Лучшей и простой альтернативой является использование встроенного решения Python:

w[::-1]

Возвращает инвертированную строку w.

0 голосов
/ 20 сентября 2018

Проблема в том, что вы сбрасываете значение x в целом на каждой итерации цикла.

def inverted(w):
    i = 0;
    x = '';
    length = len(w);
    while i < length:
         x += w[length - 1];
         length = length - 1;
    return x;
print(inverted('hello'));
0 голосов
/ 19 сентября 2018

Проблема в том, что вы назначаете x пустой строкой в ​​каждой итерации цикла for.Поместите оператор x = '' над циклом, и ваша функция должна работать нормально.

Демо:

>>> def text_inverted(w):
...     x = ''
...     for i in range(len(w)-1,-1,-1):
...         x += w[i]
...     return x
... 
>>> 
>>> print(text_inverted("hello"))
olleh

Кстати, идиоматический способ обращения строки использует нотацию среза.

>>> 'hello'[::-1]
'olleh'
0 голосов
/ 20 сентября 2018

Есть более простой способ.

a="hello"
print(a[::-1])
0 голосов
/ 19 сентября 2018

Перемещение x за пределы цикла for, поскольку в настоящее время вы сбрасываете x каждый раз при повторении цикла for:

def text_inverted(w):
    x = "" 

    for i in range(len(w)-1,-1,-1):
        x+=w[i]
    return x

print(text_inverted("hello")) #prints olleh

Еще один способ решения этой проблемы - использование понятия нарезки в Python:

def text_inverted(w):
    return w[::-1]

print(text_inverted("hello"))
...