2014-02-15 2 views
0
userValue = 5 
selection = [] 

if userValue == 1: 
    selection.append("box") 
if userValue == 2: 
    selection.append("ball") 
if userValue == 3: 
    selection.append("pen") 
if userValue == 4: 
    selection.append("pencil") 
elif(): 
    print ("please enter a correct value") 

print (selection[0]) 

Я пытаюсь сохранить значение в списке, и он продолжает давать мне ошибку, и я понятия не имею, как это сделать, любая помощь будет высоко оценена. Заранее большое спасибо. :)IndexError: индекс индекса вне диапазона. python 3.3

+1

Ваше условие 'elif' пустое, это нормально? –

+1

@MaximeLorant: выглядит как неудачный 'else:'; '()' - пустой кортеж, поэтому 'elif():' всегда false. –

ответ

0

userValue имеет значение 5 в начале и список пуст. Таким образом, вы не будете проходить в любом selection.append(), потому что 5 не равно 1, 2, 3 или 4.

Вы имеете print заявление о состоянии elif, а затем вы пытаетесь получить доступ к первый элемент пустого списка ... что невозможно, поэтому возникает исключение.
Кстати, вы должны использовать ключевое слово else вместо elif с странным.

более вещий (и работает) решение для вашей проблемы:

userValue = 5 
selection = [] 

# Create a tuple of string, in the same order as your if before 
values = ("", "box", "ball", "pen", "pencil") 

if userValue < len(values): 
    selection.append(values[userValue]) 
    print (selection[0]) 
else: 
    print ("please enter a correct value") 
-1

sectionvalue [0] ошибка, потому что нет ничего в списке. вы должны добавить что-нибудь к списку

почему ошибка uservalue в случае блока, которого не добавить условие, чтобы проверить значение 5 вы используете Элиф 5 , но он никогда не будет работать свой пустой кортеж оценки ложной

Теперь selectionvalue является empty.but вы пытались Асесс его индекса 0 его пустой , если вы пытаетесь получить доступ к пустому индексу списков в Python есть будет error.that вы получили

+0

эй, как мой ответ -1 – aovbros

+0

Я его не использовал, потому что ваше решение было неполным в лучшем случае. –

+0

@aovbros Я предполагаю, что это потому, что вы действительно не объяснили, почему в списке нет ничего. Ваш ответ действительно расплывчатый. (Я не сделал ни слова, просто предположение) –

0

вы получаете сообщение об ошибке, потому что ISN» ничего в вашем списке. Каждый из ваших тестов if недействителен, поэтому ничего не добавляется. Ваш блок elif не выполняется ни потому, что ваш тест, пустой кортеж, оценивается как false. Если вам нужен блок, который был выполнен, если предыдущие блоки были ложными, лучшим выбором был бы else.

Если вы хотите предотвратить ошибки, подобные этому в будущем, убедитесь, что у вас есть блок else, который добавляет что-то в список после каждой серии if s, которые добавляют вещи в пустой список на основе ввода пользователем.

Смежные вопросы