Получение строковой ошибки при добавлении в список - PullRequest
0 голосов
/ 05 августа 2020

Я продолжаю получать сообщение об ошибке:

AttributeError: объект 'str' не имеет атрибута 'append'

по отношению к строке 18 (последняя строка ниже) . И я не понимаю, что делаю не так. Я думал, что код преобразует все элементы в списке «сотрудников» в сами списки. Таким образом, он не должен возвращать строковую ошибку для добавления к одному из этих элементов.

Это моя первая программа, не основанная на учебнике cra sh, поэтому извиняюсь, если ответ ослепляюще очевиден

employees=[]
peeps=()
hours=()
total_hours=[]
tip=()
tips=int(input("What was the total tips?: "))
print("Enter employees' names followed by enter. Press x to stop")
while peeps != 'x': #input employee names
  peeps=raw_input("Name: ")
  employees.append(peeps)
def extractEmployees(employees): #covert employees to list of lists
  return [[x] for x in [employees]]
extractEmployees(employees) #run conversion
for x in employees: #input hours worked by each employee
  print("Enter hours for ", x, "individual daily hours followed by enter, or sum of hours worked. Press x when done")
  while hours != 'x': #add hours to employee's list
    hours=int(input())
    x.append(hours)

Ответы [ 2 ]

1 голос
/ 05 августа 2020

extractEmployees выполняется, но возвращаемое значение никогда не используется, поэтому сотрудники никогда не меняются. Вероятно, вы захотите назначить вывод следующим образом: employees = extractEmployees(employees)

Однако, вероятно, предпочтительнее сохранить этот вывод в новом списке, чтобы вы могли получить доступ только к именам сотрудников.

Дополнительно , использование списков для хранения различных типов информации сбивает с толку. В этом случае вы, вероятно, захотите использовать словарь для каждого сотрудника: {'name': employee_name, 'hours': hours}

0 голосов
/ 05 августа 2020

extractEmployees не настроен для определения или изменения значения employees, он только возвращает список. Вы должны сделать employees = extractEmployees(employees) вместо того, чтобы просто вызывать функцию. Вы получаете AttributeError в строке 18 из-за проблемы, с которой вы столкнулись с extractEmployees, когда не меняли сотрудников на список списков, поэтому элемент, который должен был быть списком, остался в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...