Ошибка индекса: индекс назначения списка вне допустимого диапазона PYTHON

я могу вводить входные данные за один проход. Это дает мне ошибку индекса после ввода моего второго ввода lastNames. Почему оно это делает? index должен быть равен 1 для этого. Диапазон 15, зачем он это делает? как мне это исправить?

код ниже:

#Purpose: Take in 15 inputs for a trainers last name and the amount of new members they 
enrolled, then output how many trainers got a certain indicated amount of enrollees.
LIMIT = 15
lastNames = [LIMIT]
enrollees = [LIMIT]
index = 0
membersZeroFive = 0
membersSixTen = 0
membersElevenFifteen = 0



while index < 16 :
  lastNames[index] = input("Enter your last name, trainer. \n")
  enrollees[index] = input("How many new members were you able to enroll? \n")
  if enrollees[index] == '0' or '1' or '2' or '3' or '4' or '5' :
    membersZeroFive = membersZeroFive+1 
  if enrollees[index] == '6' or '7' or '8' or '9' or '10' :
    membersSixTen = membersSixTen+1
  if enrollees[index] == '11' or '12' or '13' or '14' or '15' :
    membersElevenFifteen = membersElevenFifteen+1
  else :
    print("your number is either above 15 or negative. I can not operate with such values. Please take note and run the program again.\n")
  index = index+1


print("Trainers who got 0-5 members: " + membersZeroFive)
print("Trainers who got 6-10 members: " + membersSixTen)
print("Trainers who got 11-15 members: " + membersElevenFifteen)

Почему вы ожидаете, что lastNames[index] сработает, когда index > 0? lastNames содержит один элемент, как вы его определили. Вы хотели вместо этого добавить добавить в список?

Pranav Hosangadi 04.05.2022 20:59

@Karl Карл, это не дубликат этого вопроса (хотя это еще одна проблема, которую ОП еще не обнаружил). Этот вопрос касается IndexError, который возникает, когда OP пытается установить lastNames[1]

Pranav Hosangadi 04.05.2022 21:00

Добро пожаловать в Stack Overflow. С этим кодом много проблем, и общий подход не имеет смысла. Например, см. stackoverflow.com/questions/20002503. Во-вторых, lastNames = [LIMIT]не создайте список из 15 элементов. Он создает список с элементом один, который является числом 15. (Вы понимаете, почему? Вы понимаете, почему это вызывает проблему?)

Karl Knechtel 04.05.2022 21:01

@PranavHosangadi Я поторопился и вернул его. Теперь я не могу повторно закрыть дубликат действительно заданного вопроса. Тем не менее, этот вопрос, вероятно, не является полезной дублирующей ссылкой.

Karl Knechtel 04.05.2022 21:02

Также обратите внимание, что enrollees[index] == '0' or '1' or '2' or '3' or '4' or '5' не даст вам ожидаемого результата, как заметил Карл. Вам было бы намного лучше преобразование вашего ввода в число и проверить, есть ли 0 <= enrollees[index] <= 5.

Pranav Hosangadi 04.05.2022 21:04

@Karl IDK, если есть хороший дубликат для этого вопроса. Возможно, ссылка из ответа Джони ниже stackoverflow.com/questions/10712002/…, но тогда моим предпочтительным решением было бы добавить в список вместо установки элемента.

Pranav Hosangadi 04.05.2022 21:05

это все очень полезно! большое спасибо!

Ian Schaak 04.05.2022 21:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

lastNames = enrollees = [15]

Ваше назначение неверно, только список размером 1. Я думаю, что это причина вашей ошибки. Вы должны создать список размером 15.

Этот вопрос может вам помочь: Создайте пустой список в Python с определенным размером

Я действительно ценю этот быстрый ответ. Обычно я обращаюсь за помощью на Reddit. Я играю со своим кодом. Кажется, мне нужно поместить преобразование строки в int перед операторами IF, и мне нужно либо добавить свой список, либо увеличить его диапазон до 15. У меня есть постоянный LIMIT, установленный на 15, я думал, что это установит размер. Я тоже работаю с C++, поэтому немного запутался.

Ian Schaak 04.05.2022 21:10

Вы можете написать int(input('')), чтобы конвертировать в данный момент, но если вы это сделаете, обязательно сделайте блок try/except с исключением ValueError на случай, если пользователь не введет число. С другой стороны, вы все еще можете использовать LIMIT, чтобы установить размер, просто проверьте вопрос (ссылку) в ответе.

Jony_23 04.05.2022 21:18

Пожалуйста. Не могли бы вы принять мой ответ, пожалуйста? Как работает принятие ответа?

Jony_23 05.05.2022 00:11

Другие вопросы по теме

Как я могу получить вывод, например [item: 'value1', item: 'value2',...] в массиве объектов в Javascript?
Как создать массив, в каждом индексе которого есть строка в зависимости от типа данных?
Как получить ввод после закрытия класса сканера (чтобы исправить утечку ресурсов) в java без его повторной инициализации
Как удалить нули из массива и связанного массива, сохраняя порядок
Как исправить ошибку метода checkUserPassword?
Использование VLOOKUP с двумя значениями поиска при использовании IMPORTRANGE для объединения трех Google Sheets
Как установить изображения фонового html-тела с помощью JS-массива, содержащего URL-адрес изображений?
Новичок: Как правильно обновить ссылки в нескольких классах?
Как отсортировать массив объектов по датам и создать новые массивы, которые будут содержать все объекты с одинаковой датой
Excel VBA Найти значение в ячейке из массива и вернуть значение в новый столбец