Как сделать форматированный вывод списка?

Никак не могу понять одну ошибку:

TypeError: can only concatenate list (not "str") to list

Есть строка, в которую добавляются различные итемы и позже можно вывести итемы (перед последней должно быть and):

a = []
print("input")

while True:
    name = input()
    if name == "":
        break

    a = a + [name]

print(a[:-1] + " and " + a[-1])

Пробовал уже вводить str для принта отдельного элемента, выводить через list(()), tuple([]), но тогда получаю вот такой ответ:

['123', '456'] and 789.

Мне нужен результат такой, но без [] этих скобок.


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

Автор решения: Zhihar
a[:-1] + " and " + a[-1]

а у вас список, a[:-1] - срез списка (т.е. список), " and " - строка, a[-1] - последний элемент списка, т.е. тоже строка

ну и как вы список с 2 строками складываете?

если вы вводите несколько строк и хотите чтобы они были превращены в строку, где последний ввод отделен от остальных через " and ", то делать это надо по другому

например в вашем коде надо список превратить в строку

' '.join(a[:-1]) + " and " + a[-1]

через метод join можно объединить все строки в списке в строку через разделитель

в данном примере через пробел

→ Ссылка