2010-08-02 5 views
-2

i ont une fonction:requête de la liste, les fonctions de la fonction

 I need to first reverse the list and then take an entry from it. 

Plus tôt, je faisais les 3 fonctions, mais maintenant je suis en train de définir la fonction principale et les 2 autres fonctions en elle.

+0

Quel est votre problème réel? Pourquoi 'return theAction' ne fonctionne-t-il pas? – katrielalex

+0

J'ai besoin d'utiliser la liste définie dans la fonction def maxvalue. Je dois retourner sa 1ère entrée en l'inversant. – Shilpa

+0

Votre indentation est tout faux. – kennytm

Répondre

4

Votre code est très peu symbolique. Rappelez-vous que Python n'est pas C.

  1. Le point-virgule est facultatif. La parenthèse dans un if est facultative.
  2. Pour obtenir le dernier élément de la liste a, utilisez a[-1], ne pas inverser a puis obtenir son premier élément.
  3. Utilisez les fonctions intégrées! Votre modification maxagent peut être écrit simplement en utilisant la fonction max:

    def maxagent(gamestate, depth): 
        actions = gamestate.getLegalActions(0) 
        filteredactions = filter(lambda action: action != Directions.STOP, actions) 
        # alternatives: 
        # filteredactions = filter(Directions.STOP.__ne__, actions) 
        # filteredactions = (a for a in actions if a != Directions.STOP) 
        bestaction = max(filteredactions, 
            key=lambda action: self.minvalue(
                  gamestate.generateSuccessor(0, action), 
                  depth, 1 
                 )) 
        return bestaction 
    

Si vous avez besoin le score aussi, envisager de revenir un tuple.

def maxagent(gamestate, depth) 
    actions = gamestate.getLegalActions(0) 
    scores = ((self.minvalue(gamestate.generateSuccessor(0, a), depth, 1), a) 
       for a in actions if a != Directions.STOP 
      ) 
    return max(scores) 
... 
score, action = maxagent(gamestate, depth) 
Questions connexes