Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/01/2015, 06:22
Avatar de 12trunks12
12trunks12
 
Fecha de Ingreso: noviembre-2014
Mensajes: 41
Antigüedad: 10 años
Puntos: 1
Hacer que una variable de una definición pase a ser global

Buenas, ahora mismo estoy intentando hacer el 3 en raya o TicTacToe y tengo un problema, cuando alguien introduce mal una fila o columna se le da la oportunidad (o mas bien se le obliga) de introducir de nuevo la fila y columna. Esta oportunidad es una definición. Si los datos introducidos son correctos sale de la definición y pasa a la siguiente que es convertir esos datos en otros para que no salte IndexError(ya que tengo el tablero donde se juega como si fuera una lista). En esta definición de convertir los datos coje los datos introducidos al principio de todo (los que están mal) y no los que salen de la anterior definición donde te obligan a volver a ponerlos, cuando quiero que obviamente coja los que están bien.

Os dejo los códigos:

Código:
# x son los datos de fila y columna

def AnalizarFilaColumna(x): #Hacer que x sea posicion para que las siguientes definiciones cojan esta y no la que está mal
    if x[0] not in('1', '2', '3') or x[1] not in('a', 'b', 'c', 'A', 'B', 'C'):
        while x[0] not in (1, 2, 3) or x[1] not in('a', 'b', 'c'):
            x = input("La fila o columna introducida es inválida, responde de nuevo a la pregunta (fila,columna): ").split(',')
            if x[0] in('1', '2', '3') and x[1] in('a', 'b', 'c', 'A', 'B', 'C'):
                # x son los nuevos datos introducidos y que son correctos
                return x
                break

def ConvertirCoordenadas(x):
    #x aparece como los datos introducidos al principio de todo (los que están mal)
    print(x)
    x[0] = int(x[0]) - 1 #Fila para matriz (0,1,2)
    x[1] = x[1].lower()

    if x[1] == 'a':
        x[1] = 0
    elif x[1] == 'b':
        x[1] = 1
    elif x[1] == 'c':
        x[1] = 2
De paso aprovecho para preguntar si la función return hace que modifique la variable global. No se si me explico, yo al ejecutar las definiciones lo cambio por posicion
Código:
posicion = input("Dime en que posicion (fila,columna) quieres jugar: ").split(',')
#Y ejecuto así:
AnalizarFilaColumna(posicion) 
ConvertirCoordenadas(posicion)
Si falta algún dato que necesiteis saber avisad.