@ersintrust

Как правильно использовать функцию sum() в Python?

Здравствуйте.Я новичок в программировании, подскажите пожалуйста решение след. проблемы
В книге Федорова,есть упражнение:Напишите программу , которая запрашивает у пользователя две строки и формирует из этих строк список.Если строки состоят только из чисел,то программа добавляет в середину списка сумму введенных чисел,иначе добавляется строка ,образованная из слияния двух введенных ранее строк.Итоговая строка выводится на экран.
Пытаюсь решить следующим способом:
1.a=input("Введите текст:")
2.b=input"Введите текст:")
3.c=a+b
4.list(c)
5.lst=list(c)
6.if c.isdigit()==True:
7. lst.insert(7,sum(lst))
8. print(lst)
Здесь начинается проблема, при использовании функции sum() постоянно получается ошибка TypeError: unsupported operand type(s) for +: 'int' and 'list
Перепробовал несколько вариантов, ничего не помогло, подскажите пожалуйста,что делаю не так и какой самый простой способ решения.Спасибо
  • Вопрос задан
  • 4358 просмотров
Решения вопроса 2
@AWEme
Retard Soft Inc.
самый простой способ решения

Не знаю зачем в книге написано делать это именно через список, можно обойтись и без него:
v0 = input('Value 1: ')
v1 = input('Value 2: ')
if (v0 + v1).isdigit():
    new_value = str(int(v0) + int(v1))
else:
    new_value = v0 + v1
print(v0 + new_value + v1)

Чтобы функция sum нормально работала в неё нужно передавать список чисел, а у вас, судя по ошибке, передаётся список списков.
Ответ написан
DarkWood
@DarkWood
Не знаю что именно вы проходите в книге, но, полагаю, большая часть примененного здесь еще не описывалась. Для разнообразия оно универсально и подойдет для любого количества вводимых значений.

lst = [input() for i in range(2)]
try:
  lst.insert(len(lst) // 2, sum([int(i) for i in lst]))
except ValueError:
  lst.insert(len(lst) // 2, "".join(lst))
print(*lst)


in range(2) - здесь как раз можно изменить количество вводных значений.

Далее в блоке try программа пытается преобразовать введенные данные в числа. Если это получается, то она выводит их сумму (как раз основанную на суммировании списка, как хотели сделать вы). Если хоть одно значение числом стать не может (ValueError), то оставляем все данные строковыми и просто объединяем вместе.

len(lst) // 2 - всегда будет отдавать среднюю позицию для вставки в список.

Кстати, непонятно почему вы у себя пишите позицию "7". Список имеет длину всего два элемента и новый добавлялся бы в конец, а не середину, как дано в задании.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
приводи строку в int

строку ты получаешь из ввода
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы