Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/12/2010, 21:30
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Duda sobre python

Código Python:
Ver original
  1. def insereix_llista (l,f):
  2.     """
  3.    Afegeix la figura f a la llista l si i nomes si aquesta f no esta present a l.
  4.    Pre ={l: llista; f: cadena}
  5.    Post={Retorna True en cas que hagi pogut afegir f a la llista l i False en cas contrari.}
  6.    """
  7.     afegit=False
  8.     i=0
  9.     while i<len(l) and not afegit:
  10.         if l[i]!=f:
  11.             afegit=True
  12.         else:
  13.             i=i+1
  14.     if afegit:
  15.         l[i]=f
  16.     else:
  17.         afegit=False
  18.     return afegit
  19.    
  20. def omplir_parelles (f,c):
  21.     """
  22.    Omple tota la matriu amb parelles diferents.
  23.    Pre ={f, c: enter positiu}
  24.    Post={Retorna una matriu de la mida indicada omplerta amb parelles diferents.}
  25.    """
  26.     matriu=omplir(f,c) #Aqui no tengo ni idea que haga este metodo
  27.     i=0
  28.     while i<len(matriu) : #Recorres las filas de la matriz
  29.         figura=lletra_maj_atzar() + str(numero_atzar(9)) #Generas numero al azar
  30.         ins=insereix_llista(matriu[i],figura) #Insertas figura en la fila si se puede, pero lo que tendrias que hacer es ver si no esta en toda la matriz
  31.         if ins==True: #Checas a ver si lo inserto
  32.             p1=posar_figura(matriu, figura) #Lo vuelves a insertar
  33.             p2=posar_figura(matriu, figura) #Lo mismo aqui
  34.             i=i+1 #Incrementas
  35.         else:
  36.             i=i+1 #Incrementas de todos modos, mmmmm....
  37.     return matriu #Regresas la matriz
  38.  
  39. def posar_figura (m, fig) :
  40.     """
  41.    Col.loca aleatoriament la figura indicada en una casella buida de la matriu.
  42.    Pre ={m: matriu}
  43.    Post={Retorna True en cas que s'hagi pogut col.locar la figura a la matriu; False en cas contrari.}
  44.    """
  45.     posat=False
  46.     llista_casellas=[]
  47.     for i in range (len(m)):
  48.         for j in range (len(m[i])): #Recorres la matriz
  49.             if m[i][j]=='_': #Hasta encontrar un "_"
  50.                 llista_casellas.append((i*10)+j) #Añades i*10+j a la lista
  51.                 posat=True
  52.     x=numero_atzar(len(llista_casellas)-1) #Me imagino que regresa un numero al azar entre 0 y n
  53.     posicio1=llista_casellas[x]//10
  54.     posicio2=llista_casellas[x]&#37;10
  55.     m[posicio1][posicio2]=fig
  56.     return posat
Revise tu código, te recomiendo documentar cada bloque que hagas(No cada linea). Ir pensando en dividir todo el problema en partes. La verdad tu código no es difícil de leer por que gracias a dios esta hecho en python, pero si es difícil de comprender, por que haces muchas cosas de una forma no muy "pythonica", reinventas la rueda, etc.

Solo para ponerte un ejemplo reescribe tu función insertar en lista
Código:
def insertar_en_lista(lista, figura):
    if figura in lista:
        lista.append(figura)
        return True
    return False
Mucho mas legible, compacto, rápido, elegante que tu código actual.

También te recomiendo usar un entorno integrado, como el netbeans o el eclipse con plugins para python, que te muestran tus errores mientras vas tecleando ciertamente no te hace un mejor programador pero por lo menos te das cuenta de tus errores mas rápido.