Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Hacer que una variable de una definición pase a ser global

Estas en el tema de Hacer que una variable de una definición pase a ser global en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/01/2015, 06:22
Avatar de 12trunks12  
Fecha de Ingreso: noviembre-2014
Mensajes: 41
Antigüedad: 9 años, 4 meses
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.
  #2 (permalink)  
Antiguo 18/01/2015, 12:01
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 10 meses
Puntos: 31
Respuesta: Hacer que una variable de una definición pase a ser global

Las dudas de ejercicios de clase al profesor
  #3 (permalink)  
Antiguo 18/01/2015, 14:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Hacer que una variable de una definición pase a ser global

¿Porque usar variables globales, cuando puedes guardarlo el resultado de una función y pasarla a otra?
¿Haz intentado leerle un libro de python o al menos ver la secciones que te interesan?
  #4 (permalink)  
Antiguo 19/01/2015, 08:20
Avatar de 12trunks12  
Fecha de Ingreso: noviembre-2014
Mensajes: 41
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Hacer que una variable de una definición pase a ser global

Cita:
Iniciado por alzacon Ver Mensaje
Las dudas de ejercicios de clase al profesor
Si no me vas a ayudar no hace falta que comentes, parece que quieras cabrearme.

Cita:
Iniciado por razpeitia Ver Mensaje
¿Porque usar variables globales, cuando puedes guardarlo el resultado de una función y pasarla a otra?
¿Haz intentado leerle un libro de python o al menos ver la secciones que te interesan?
Eso es lo que necesito. Acabo de buscar ahora tal cual lo que está en negrita (guardar el resultado de una funcion y pasarla a otra), después de haber buscado sobre funciones y la funcion return en google unas cuantas veces, y no estoy seguro de si esto es lo que necesito al ejecutar la función de ConvertirCoordenadas
Código:
ConvertirCoordenadas(AnalizarFilaColumna) # Es así como se pasa el mismo valor de una función a otra?
  #5 (permalink)  
Antiguo 19/01/2015, 10:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Hacer que una variable de una definición pase a ser global

Ejemplo simple:

Código Python:
Ver original
  1. def multiplicar(x, y):
  2.     return x * y
  3.  
  4. def sumar(x, y):
  5.     return x + y
  6.  
  7. resultado = multiplicar(3, 2) # 6
  8. print resultado
  9.  
  10. nuevo_resultado = sumar(resultado, 10) # 16
  11. print nuevo_resultado

Deberías de leer sobre funciones.

Etiquetas: definición, global, gui, ip, pase, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:07.