Как исправить ‘IndexError: индекс списка вне диапазона’ в python?

#python #list #indexing

#python #Список #индексирование

Вопрос:

Я учусь на 10-м курсе и очень плохо кодирую. По сути, я пытаюсь создать действительно простой симулятор эволюции, и до сих пор он работал хорошо, но я столкнулся с этой ошибкой при использовании списков для определения переменных. Я приложил полный код.

 #************************#
#*  Jadday's Amazing    *#
#* Evolution Simulator  *#
#************************#

import random

print("The Evolution Starts Here")

numcs = 100

def generation1():
    global numcs
    profiles = []
    maxscore = 0
    minscore = 100
    x = 0
    for i in range(0,numcs):
        a = random.randint(0,75)
        b = random.randint(a,100)
        score = random.randint(a,b)
        name = [a,b]
        x = str(x)
        x = int(x)
        x = x   1

        if score > maxscore:
            maxscore = score
            score = str(score)
            best = score
            score = int(score)

        if score < minscore:
            minscore = score
            score = str(score)
            worst = score
            score = int(score)

        score = str(score)
        profile = score
        score = int(score)
        profiles.append(score)
        profiles = [int(x) for x in profiles]
        profiles.sort()
        print(profile)
    print("")
    print("")
    print("The best was:")
    print(best)
    print("")
    print("The worst was:")
    print(worst)

    numcs = numcs // 2

    templength = len(profiles)
    length = templength // 2

    for x in range(0,length):
        del profiles[0]

    print("")
    print(profiles)



def generation():
    global numcs
    profiles = []
    maxscore = 0
    minscore = 100
    x = 0
    for i in range(0,numcs):
        a = profiles[i]
        a = a / 2
        b = profiles[i]
        b = b * 2
        score = random.randint(a,b)
        name = [a,b]
        x = str(x)
        x = int(x)
        x = x   1

        if score > maxscore:
            maxscore = score
            score = str(score)
            best = score
            score = int(score)

        if score < minscore:
            minscore = score
            score = str(score)
            worst = score
            score = int(score)

        score = str(score)
        profile = score
        score = int(score)
        profiles.append(score)
        profiles = [int(x) for x in profiles]
        profiles.sort()
        print(profile)
    print("")
    print("")
    print("The best was:")
    print(best)
    print("")
    print("The worst was:")
    print(worst)

    numcs = numcs // 2

    templength = len(profiles)
    length = templength // 2

    for x in range(0,length):
        del profiles[0]

    print("")
    print(profiles)




generation1()
for x in range(0,6):
    generation()
    numcs = numcs // 2

  

Ошибка находится в строке ‘a = profiles [i]’ при определении ‘generation’.
Скорее всего, я делаю симулятор действительно неэффективно, но я пытаюсь упростить его.
Если кто-нибудь знает, как это решить, я был бы признателен.
Спасибо

Ответ №1:

В функции generation1 ваш profiles = [] пустой список. В следующей строке вы пытаетесь profiles[i] указать, где i диапазон от 0 до 100.