2016-01-20 4 views
2
numbers = [] 

def easy_mode(): 
    with open("aa.txt","r") as f: 
     for i in range(9): 
      numbers.append(f.readline().strip()) 
     print(numbers) 

from random import randint 

for i in range(9): 
    print(numbers[randint(0,8)]) 

когда-либо я обработать это в Python программа выводит эту ошибку:Что не так с моим индексом списка? ошибка индекса указывается

Traceback (most recent call last): 
    File "N:\Yr 10 CP\Practice\python\Gaming\THE ACTUAL THING.py", line 12, in <module> 
    print(numbers[randint(0,8)]) 
IndexError: list index out of range 

может кто-то пожалуйста, помогите мне и попытаться исправить мой код для меня, спасибо

Alberto

ответ

1

Это табуляции является странно так что им не совсем уверен, что находится внутри функции, но я думаю, что

from random import randint 

for i in range(9): 
    print(numbers[randint(0,8)]) 

является вне функции, и я предполагаю, что вы не вызывали функцию, а просто загружали скрипт, и он начал выполнять пропуску функции, и в конце номера цифры переменная пуста и, следовательно, любой индекс выходит за пределы допустимого диапазона.

EDIT: Так что рабочая версия кода должна выглядеть так (при условии, что файл действительно содержит, по меньшей мере, 9 строк):

numbers = [] 

def easy_mode(): 
    with open("aa.txt","r") as f: 
     for i in range(9): 
      numbers.append(f.readline().strip()) 
     print(numbers) 

from random import randint 

easy_mode() 
for i in range(9): 
    print(numbers[randint(0,8)]) 
+0

Спасибо @crollywood за ваш ответ, я изменю эту часть кода и посмотрю, что произойдет, если ваше предложение, похоже, не исправляет код, вы могли бы дайте мне альтернативу? – alberto

+0

Добро пожаловать! Это должно быть все правильно после того, как вы измените код, но если у вас возникли проблемы, просто скажите, что это такое, и я сделаю все возможное, чтобы помочь вам. – crollywood

2

Здесь, кажется, несколько ошибок. Во-первых, в первом цикле вы предполагаете, что файл имеет не менее 9 строк, что может быть неверным. Что еще более важно, вы никогда не называя easy_mode, так numbers фактически пусто в вашем втором цикле

+0

Файл «aa.txt» действительно имеет 9 линий, и функция вызывается позже в коде, файл имеет 9 слов, каждый из которых помещается в отдельную строку, я не знаю, вызывает ли это проблему – alberto

+0

Затем используйте: 'numbers = open (" aa.txt "). readlines () ', а затем' for in range (len (numbers)) ' – manuBriot

+0

Я не уверен, ожидали ли вы, что ваш последний цикл будет показывать слова в любом порядке, но это не то, что вы делаете. В конечном итоге вы можете получить дубликаты и пропущенные слова. Найдите «случайную перестановку» вместо этого, возможно, «random.shuffe (numbers)» – manuBriot