Как указать в if, что переменная должна быть последним элементом списка?

li = input().split('.')
done = []
for half in li:
    half = list(reversed(half.split()))
    for word in range(len(half)):
        half[word] = half[word].lower()
        half[word] = half[word].strip('.')
        if word == 0:
            half[word] = half[word].title()
            done.append(half[word])
        elif word == max(len(half)):
            half[word] = half[word] + '.'
            done.append(half[word])
        else:
            done.append(half[word])
print(done)

Нужно к последнему элементу списка прибавить точку. Подскажите как правильно это сделать.

TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14036/2251526421.py in <module>
      9             half[word] = half[word].title()
     10             done.append(half[word])
---> 11         elif word == max(len(half)):
     12             half[word] = half[word] + '.'
     13             done.append(half[word])

TypeError: 'int' object is not iterable

Ответы (3 шт):

Автор решения: Sergey Derevianko

Есть несколько вариантов получения последнего элемента списка:

  1. any_list[-1]
  2. any_list[len(any_list)-1]

В вашем случае это делается так:
li = input().split('.')
done = []
for half in li:
    half = list(reversed(half.split()))
    for word in range(len(half)):
        half[word] = half[word].lower()
        half[word] = half[word].strip('.')
        if word == 0:
            half[word] = half[word].title()
        elif word == half[-1]:
            half[word] = half[word] + '.'
        done.append(half[word])
print(done)
→ Ссылка
Автор решения: Andy Pavlov

У Вас как-то все сложно сделано. Можно все слова обработать, а потом на первое слово в списке натравить title(), а на последнее слово прибавить точку.

li = [e for e in input().split('.') if e]
done = []
for half in li:
    row =[w.lower().strip('.') for w in reversed(half.split()) if w]
    row[0] = row[0].title()
    row[-1] += '.'
    done.append(row)
print(done)
→ Ссылка
Автор решения: Сергей

If вообще трогать не нужно (я к формулировке вопроса). Последний элемент - он и есть последний. Добавил простую операцию в самый конец перед печатью.

'''

li = input().split('.')
done = []
for half in li:
    half = list(reversed(half.split()))
    for word in range(len(half)):
        half[word] = half[word].lower()
        half[word] = half[word].strip('.')
    if word == 0:
        half[word] = half[word].title()
        done.append(half[word])
    elif word == max(len(half)):
        half[word] = half[word] + '.'
        done.append(half[word])
    else:
        done.append(half[word])
 done[-1]+='.' #добавляем точку к последнему элементу
 print(done)

'''

→ Ссылка