2017-01-23 3 views
0

Что делать, если в этом коде появляется следующая ошибка?Перечисление значений в цикле for

def reverse_word(word): 
    index = len(word) 
    new_word = [] 
    for i in range(index - 1, -1, -1): 
     new_word.append(word[i]) 
    return ''.join(new_word) 
def reverse_sentence(sentence): 
    l = sentence.split() 
    for i in l: 
     l[i] = reverse_word(i) 
     l = ' '.join(l) 
    print(l)  
a = "Hello !Nhoj Want to have lunch?" 
reverse_sentence(a) 

TypeError: list indices must be integers or slices, not str.

Что я могу написать вместо этой строки:

l[i] = reverse_word(i) 
+0

Я думаю, что вы хотите сделать что-то вроде 'для я, ш в Перечислять (л):' и 'л [я] = reverse_word (ш)' и перемещаться из цикла вашего списка сборки. Я не уверен, что алгоритм в порядке. – daouzli

ответ

0

... эта строка: l[i] = reverse_word(i) выдает ошибку, потому что i является строка (word) , но в l[i], iдолжен быть индексом.

Вы, вероятно, хотели сделать что-то вроде этого:

words = sentence.plit() 
new_sentence = [] 
for i,word in enumerate(words): #or just for word in words, you don't need the index 
    new_sentence.append(reverse_word(word)) 

, а затем присоединиться к моменту возвращения return ' '.join(new_sentence)

Эта реализация следует за логикой, но использует строки вместо списков.

def reverse_word(word): 
    new_word = '' 
    for i in range(len(word) - 1, -1, -1): 
     new_word += word[i] 
    return new_word 

def reverse_sentence(sentence): 
    r = '' 
    for word in sentence.split(): 
     r += reverse_word(word) + ' ' 
    return r[:-1] 

>>> a = "Hello !Nhoj Want to have lunch?" 
>>> reverse_sentence(a) 
>>> 'olleH johN! tnaW ot evah ?hcnul' 
+0

Этот ответ в порядке, но можно что-то сделать? –

+0

Извините, я не понимаю ваш вопрос ... –

+0

Я имею в виду что-то сделать в своем коде –

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