Python: TypeError: 'Funktion' Objekt hat kein Attribut '__getitem__'

Ich bin neu in python und ich habe Probleme mit dem code. Ich bin immer der Fehler

TypeError: 'function' object has no attribute '__getitem__' at line 32

Ich kann nicht herausfinden, was Los ist. Von dem, was ich gesehen habe, auf der internet, es bedeutet, etwas über die Verwendung einer Funktion als Liste, aber ich kann nicht herausfinden, dass mit meinem code. Mein code ist

#! /usr/local/bin/python


import random


def genFirstGen():
    print "First Generation"
    generation = []
    for chromosomecounter in range(0, 20):
        chromosome = []
        fitness = 0
        for genecounter in range(0, 10):
            chromosome.append(random.randrange(0, 2))
        for genecounter in range(0, 10):
            if (chromosome[genecounter] == 1):
                fitness += 1
        chromosome.append(fitness)
        generation.append(chromosome)
        print gene
    return generation


def FindMostFit(generation):
    failedset = [0,0,0,0,0,0,0,0,0,0,0]
    highestfitness = 0
    mostfit = 0
    fitparents = []
    gene = []
    for fitcounter in range(0, 10):
        for chromosomecounter in range(0, 20):
            chromosome = [generation[chromosomecounter]] #  The error is here.
            fitness  = chromosome[10]
            highestfitness = 0
            if (fitness > highestfitness):
                highestfitness = fitness
                mostfit = chromosomecounter

        fitparents.append(generation[mostfit])
        generation[mostfit] = failedset
    return fitparents


def BreedMostFit(Parents):
    Mother = Parents(random.randrange(0, 10))
    Father = Parents(random.randrange(0, 10))
    child = []
    for genecounter in range(0, 5):
        parentgenetaken = random.randrange(0, 2)
        if (parentgenetaken == 1):
            child.append(Mother[genecounter * 2])
            child.append(Mother[(genecounter * 2) + 1])
        else:
            child.append(Father[genecounter * 2])
            child.append(Father[(genecounter * 2) + 1])
    return child


def Generation2():
    newgeneration = []
    for gencounter in range(0, 20):
        newgeneration.append(BreedMostFit(FindMostFit(genFirstGen)))
    return newgeneration

def GenerationFunction(parentgen):
    generation = []
    for gencounter in range(0, 20):
        generation.append(BreedMostFit(FindMostFit(parentgen)))
    return generation

GenerationFunction(Generation2())

Ich bin mit meinem Latein am Ende. Kann jemand helfen? Danke!

  • Fühlen Sie sich wie das teilen der traceback?
  • Hallo und herzlich willkommen auf StackOverflow. Könntest du vielleicht schreiben welche Zeile generiert den Fehler und was rufen Sie? Dein code ist ziemlich lang, und es ist nicht klar, wo das problem ist.
Schreibe einen Kommentar