Python - Convertir a variable global

 
Vista:

Convertir a variable global

Publicado por David (1 intervención) el 27/11/2019 05:01:24
Muy buenas noches, quisieran que me ayuden en este problema que no me deja avanzar, 1.Tengo una funcion definida y quiero que la variable que le asigne dentro de ella sea visible fuera de ella.2. Obviamente que reemplaze el contenido de la misma variable creada anteriormente, como cuando le cambio el contenido a la variable.
no se si me explico bien. Espero que me entiendan y disculpen por enumerar lo anterior, ya que o vaya a sonar como exigencia.
Les envio mi codigo. Este programa consiste en crear un laberinto 10x10 con numpy y que con cada print me aparezca el personaje de acorde le vaya ingresando WASD, W=arriba, A=izquierda, etc.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
pared_superior = [1,1,1,1,1,3,1,1,1,1,1]
parte_interna1 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna2 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna3 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna4 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna5 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna6 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna7 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna8 = [1,0,0,0,0,0,0,0,0,0,1]
parte_interna9 = [1,0,0,0,0,0,0,0,0,0,1]
pared_inferior = [1,1,1,1,1,1,1,2,1,1,1]
prototipo = pared_superior + parte_interna1 + parte_interna2 + parte_interna3 + parte_interna4 + parte_interna5 + parte_interna6 + parte_interna7 + parte_interna8 + parte_interna9 + pared_inferior
print(len(prototipo)) #Para saber las cantidades de elemntos
print(prototipo)
 
#creacion de una lista string
prototipo_string1 = ""
for i in prototipo:
    i = str(i)
    prototipo_string1 = prototipo_string1 + i + ","
print(prototipo_string1) # Demuestra una cadena de los elemntos en string
 
separador = ","
prototipo_string = prototipo_string1.split(separador)
print(prototipo_string) #lista creada convertida a matriz
 
 
#lista con los elemntos convertios a las letras especificas
for n, i in enumerate(prototipo_string):
    if i == "1":
        prototipo_string[n] = "X"
    if i == "3":
        prototipo_string[n] = "S"
    if i == "2":
        prototipo_string[n] = "E"
    if i == "0":
        prototipo_string[n] = "."
 
print(prototipo_string)
print(len(prototipo_string))
 
 
import numpy as np
laberinto = np.array(prototipo_string) #Transformacion a una matriz
laberinto1 = np.delete(laberinto, 121) #Eliminacion del ultimo elemnto de la matriz
laberinto1 = laberinto1.reshape((11,11))
print(laberinto1)
#A partir de la matriz se convierte para elaorar el laberinto
#SE USA LABERINTO1 PARA ALGUNA MODIFICACION. LABERINTO 1 ES LA BASE
 
for filas in laberinto1:
    str=""
    for elemento in filas:
        if elemento == "X":
            str = str + "X"
        if elemento == "S":
            str = str + "S"
        if elemento == "E":
            str =str + "E"
        if elemento == ".":
            str = str + " "
    print(str)
 
#INICIO DEL JUEGO
laberinto1[10][7] = "5"
print(laberinto1)
 
 
for filas in laberinto1:
    str=""
    for elemento in filas:
        if elemento == "X":
            str = str + "X"
        if elemento == "S":
            str = str + "S"
        if elemento == "5":
            str =str + "P"
        if elemento == ".":
            str = str + " "
    print(str)
#POSICION DE LA VARIABLE PERSONAJE EN 5, FILA Y COLUMNA
[f,c] = np.where(laberinto1 == "5")
print(f)
print(c)
 
 
 
matriz_inicio = laberinto1[9:11,6:9]
print(matriz_inicio)
 
print("Para el movimiento del personaje 'P', use las teclas WASD" )
#FUNCION INICIO
 
 
def inicio(letra):
    if letra == "W" and (f-1,c == '.'):
        laberinto1[2,7] = "5"
        return laberinto1
 
 
 
print(laberinto1)


El codigo la hice a mi manera ya que asi me acoplo mas.
el problema es lo ultimo como he detallado antes



Captura-de-pantalla-295
Tambien adjunto una imagen, lo que imprime en la consola es como quiero que me salga, pero eso lo realice asi cambiando la variable normal. Ya he hecho para que la variable sea global pero no me sale, a lo mejor sera que lo estoy aplicando mal. Ayudenme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de César
Val: 41
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Convertir a variable global

Publicado por César (20 intervenciones) el 29/11/2019 21:54:31
Hola David

Lo primero, para que tu código sea más legible, insértalo entre [kode] y [/kode] cambia las "k" por "c"

No es que sea un experto, pero cuando utilizo una variable global la declaro antes, después de importar los módulos. Por ejemplo:
1
2
import numphy as np
laberinto1="" #La declaro y le doy un valor cualquiera

Después, dentro de la función....
1
2
3
4
5
def inicio(letra):
    global laberinto1 #Aquí indicas que es una variable global
    if letra == "W" and (f-1,c == '.'):
        laberinto1[2,7] = "5" #Aquí cambias su valor
    return laberinto1 #Y la función la devuelve

Prueba así y comentas.

Saludos
César
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar