TypeError: '>' не поддерживается между экземплярами 'list' и 'int' не может решить с помощью len (list) - PullRequest
0 голосов
/ 28 мая 2020

У меня возникла эта простая проблема, и я посмотрел похожие ответы. Проблема в том, что, по-видимому, я сравниваю список с int, и многие говорят, что решение - просто использовать len (list). Дело в том, что я это сделал, и проблема осталась прежней. Что странно, если я поменяю> на <, проблема будет решена. Дело, конечно, в том, что мне нужен>, а не <. Если я поменяю положение элементов. Бывает наоборот. </p>

Упражнение таково:

-Составьте список из 3 имен сотрудников

-Составьте еще один список и поместите в подсписок дни месяц их отсутствия на рабочем месте.

-Печать имена сотрудников и дни его отсутствия Показать сотрудника с количеством посылок

-Показать имя -или фамилии - с сотрудниками, отсутствовавшими менее суток.

Вот и проблема

employees = ["Nicolás", "Gonzalo", "Tomás"]

absences = [[1, 5, 9], [2], [3, 6, 12, 17]]

for x in range(len(employees)):
    print(employees[x], absences[x])

for x in range(len(employees)):
    print(employees[x], len(absences[x]))

minorposition = 0
less_absences = int(len(absences[0]))
quantity = 1


for x in range(1, len(employees)):
    absences_per_emp = len(absences[x])

    if less_absences > absences_per_emp:              -----> here is the problem
        less_absences = absences[x]
        minorposition = x
    elif less_absences == absences[x]:
        quantity = quantity + 1

if quantity == 1:
    print("The employee with less absences is:")
    print(employees[minorposition])
else:
    print("The employees with minor absences:")
    for x in range(len(employees)):
        if absences[x] == menor:
            print(employees[x])

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

empleados = ["Nicolás", "Gonzalo", "Tomás"]

faltas = [[1, 5, 9], [2], [3, 6, 12, 17]]

posmenor = 0
menor = len(faltas[0])
cantidad = 1

for x in range(1, len(empleados)):
    if menor > len(faltas[x]):              If I change the menor variable here 
        menor = faltas[x]                    for len(faltas[0]) the code runs
        posmenor = x                          correctly. Why this happens?
    elif menor == faltas[x]:
        cantidad = cantidad + 1

1 Ответ

0 голосов
/ 28 мая 2020

Проблема в том, что вы сначала назначаете menor len(faltas[x]), которое является целым числом, поэтому первая итерация вашего for l oop будет работать нормально; но затем вы переназначаете menor на faltas[x], который является массивом. Вместо этого вы должны назначить его len(faltas[x]), как вы делали в первый раз:

for x in range(1, len(empleados)):
    if menor > len(faltas[x]): 
        menor = len(faltas[x])
        posmenor = x 
    elif menor == faltas[x]:
        cantidad = cantidad + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...