я могу вводить входные данные за один проход. Это дает мне ошибку индекса после ввода моего второго ввода 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)
@Karl Карл, это не дубликат этого вопроса (хотя это еще одна проблема, которую ОП еще не обнаружил). Этот вопрос касается IndexError, который возникает, когда OP пытается установить lastNames[1]
Добро пожаловать в Stack Overflow. С этим кодом много проблем, и общий подход не имеет смысла. Например, см. stackoverflow.com/questions/20002503. Во-вторых, lastNames = [LIMIT]не создайте список из 15 элементов. Он создает список с элементом один, который является числом 15. (Вы понимаете, почему? Вы понимаете, почему это вызывает проблему?)
@PranavHosangadi Я поторопился и вернул его. Теперь я не могу повторно закрыть дубликат действительно заданного вопроса. Тем не менее, этот вопрос, вероятно, не является полезной дублирующей ссылкой.
Также обратите внимание, что enrollees[index] == '0' or '1' or '2' or '3' or '4' or '5' не даст вам ожидаемого результата, как заметил Карл. Вам было бы намного лучше преобразование вашего ввода в число и проверить, есть ли 0 <= enrollees[index] <= 5.
@Karl IDK, если есть хороший дубликат для этого вопроса. Возможно, ссылка из ответа Джони ниже stackoverflow.com/questions/10712002/…, но тогда моим предпочтительным решением было бы добавить в список вместо установки элемента.
это все очень полезно! большое спасибо!






lastNames = enrollees = [15]
Ваше назначение неверно, только список размером 1. Я думаю, что это причина вашей ошибки. Вы должны создать список размером 15.
Этот вопрос может вам помочь: Создайте пустой список в Python с определенным размером
Я действительно ценю этот быстрый ответ. Обычно я обращаюсь за помощью на Reddit. Я играю со своим кодом. Кажется, мне нужно поместить преобразование строки в int перед операторами IF, и мне нужно либо добавить свой список, либо увеличить его диапазон до 15. У меня есть постоянный LIMIT, установленный на 15, я думал, что это установит размер. Я тоже работаю с C++, поэтому немного запутался.
Вы можете написать int(input('')), чтобы конвертировать в данный момент, но если вы это сделаете, обязательно сделайте блок try/except с исключением ValueError на случай, если пользователь не введет число. С другой стороны, вы все еще можете использовать LIMIT, чтобы установить размер, просто проверьте вопрос (ссылку) в ответе.
Пожалуйста. Не могли бы вы принять мой ответ, пожалуйста? Как работает принятие ответа?
Почему вы ожидаете, что
lastNames[index]сработает, когдаindex > 0?lastNamesсодержит один элемент, как вы его определили. Вы хотели вместо этого добавить добавить в список?