2017-06-01 2 views
0

Je suis nouveau en Python et je veux apprendre l'algorithme Backtracking. Je regardé quelques tutoriaux et moi avons créé ce code:Python Bkt - Liste index hors de la plage

x = [] 
pod = [] 
class def_pod: 
    ins1 = 0 
    ins2 = 0 
    def __init__(self, name): 
     self.name = name 
ins_start = int(input("Insula de start: ")) 
n = int(input("Numar de poduri: ")) 
def Plimbare (insula_crt, k): 
    if n==k: 
     print(x) 
    else: 
     for i in range(0,n-1): 
      if POSIBIL(i,k,insula_crt): 
       x[k] = i 
       if insula_crt == pod[i].ins1: 
        ins=pod[i].ins2 
       else: 
        ins=pod[i].ins1 
       Plimbare(ins,k+1) 

def POSIBIL (alfa,k,ins_crt): 
    for j in range(0,n-1): 
     if x[j] == alfa: 
      return False 
    return pod[alfa].ins1 == ins_crt or pod[alfa].ins2 == ins_crt 

print ("Lansare executie program: \n") 
Plimbare(ins_start,0) 

Mais j'ai quelques erreurs liées par le fait que mes tableaux sont hors de portée et je ne sais pas ce que je peux faire pour résoudre ce problème. Pouvez-vous m'aider? Je suis désolé si ma question est pertinente, mais pas comme je le disais, je suis nouveau ..

+0

Première fois votre fonction 'POSIBIL()' appelé, 'x' est une liste vide et vous voulez toujours accéder au nième élément de cette liste – kuro

+0

au lieu de x [k] = i, utilisez x.append (i) –

+0

Merci beaucoup. Je pense que mon problème est maintenant résolu. :) –

Répondre

0

Résolue dans les commentaires:

First time your POSIBIL() function called, x is empty list and you still want to access upto nth element in that list 

instead of x[k] = i, use x.append(i) – Jay Parikh