Как исправить «неподдерживаемые типы операндов для +: 'int' и 'list'" в Python - PullRequest
0 голосов
/ 21 июня 2019

Я работаю над проектом, и ранее я составлял список под названием salary, который рассчитывает чью-то зарплату на основе их вклада. Теперь я хочу создать список с именем 'tSalaryExpenditure', который возьмет список 'salary' и сложит все элементы в списке. Однако, когда я добираюсь до этой стадии, я получаю сообщение об ошибке

"неподдерживаемые типы операндов для +: 'int' и 'list'".

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

salary = []
for i in range(len(tData)):
  tmpSalary = []
  warn = 0
    if total == 37.5:
      fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
      tmpSalary.append(fullWeek)
    elif total > 37.5:
      fullWeek = [a*37.5 + ((b-37.5)*a)*1.5 for a,b in zip(tmpRate,Hours)]
      tmpSalary.append(fullWeek)
    elif total < 37.5:
      fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
      warn += 1 
      tmpWarning.append(warn)
      tmpSalary.append(fullWeek)

  salary.append(tmpSalary)

tSalaryExpenditure = sum(salary)

1 Ответ

0 голосов
/ 21 июня 2019

Проблема в том, что когда вы используете списки, результатом является массив.Итак, у вас есть

>>> fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
>>> fullWeek
[450.0, 650.0, 700.0] # for example

Поэтому, когда вы добавляете fullWeek в другой список, он фактически создает список в списке.

>>>[].append([450.0, 650.0, 700.0])
[[450.0, 650.0, 700]]

Проблема удваивается, когда вы добавляете tmpSalary к salary.Поэтому, когда вы пытаетесь вызвать sum(), он видит только внешний объект списка, а не целые числа внутри.

Способ исправить это - добавить отдельные элементы или указать внутренний.список к сумме.Выполните одно из следующих действий .

# Method 1
(...)
if total == 37.5:
      fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
      tmpSalary += fullWeek
(...)

salary += tmpSalary


# Method 2
tSalaryExpenditure = sum(salary[0][0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...