Python - Procedimiento

 
Vista:
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Procedimiento

Publicado por Gustavo (24 intervenciones) el 14/10/2019 20:56:08
Hola:

El siguiente código funciona bien (V2.7).
Se trata de generar una matriz (o lista de listas) cargarla con números aleatorios,mostrarla y agregar una fila y mostrarla nuevamente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import random
fil, col = 3, 4
matriz=[]
for fila in range(fil):
    matriz.append([])
    for columna in range(col):
        matriz[fila].append([]) # Incercion
        matriz[fila][columna]=(random.randint(200, 999)) # Asignacion
def imprimir ():
    for fila in range(fil):
        print ''
        for columna in range(col):
            print matriz[fila][columna],
    print ''
imprimir ()
fila+=1
fil+=1
matriz.append([])
for columna in range(col):
    matriz[fila].append(random.randint(200, 999)) # Incercion y asignacion
imprimir ()

Pero cuando quiero definir otro procedimiento, deja de funcionar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import random
fil, col = 3, 4
matriz=[]
for fila in range(fil):
    matriz.append([])
    for columna in range(col):
        matriz[fila].append([]) # Incercion
        matriz[fila][columna]=(random.randint(200, 999)) # Asignacion
def imprimir ():
    for fila in range(fil):
        print ''
        for columna in range(col):
            print matriz[fila][columna],
    print ''
imprimir ()
def agregarFila ():
    fila+=1
    fil+=1
    matriz.append([])
    for columna in range(col):
        matriz[fila].append(random.randint(200, 999)) # Incercion y asignacion
agregarFila ()
imprimir ()

El procedimiento imprimir() sigue funcionando pero el procedimiento agregarFila (): muere.

Alguna idea?

Desde ya muchas gracias






...
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 Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Procedimiento

Publicado por Antoni Masana (67 intervenciones) el 14/10/2019 21:34:09
El codigo deberia estar asi:

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
import random
 
# ---&--- Funcion Imprimir
 
def imprimir ():
    for fila in range(fil):
        print ''
        for columna in range(col):
            print matriz[fila][columna],
    print ''
 
# ---&--- Funcion Agregar Fila
 
def agregarFila (fila, fil):
    fila+=1
    fil+=1
    matriz.append([])
    for columna in range(col):
        matriz[fila].append(random.randint(200, 999)) # Incercion y asignacion
 
# ---&--- MAIN
 
fil, col = 3, 4
matriz=[]
for fila in range(fil):
    matriz.append([])
    for columna in range(col):
        matriz[fila].append([]) # Incercion
        matriz[fila][columna]=(random.randint(200, 999)) # Asignacion
 
imprimir ()
agregarFila (fila, fil)
imprimir ()

He reordenado las líneas, las funciones siempre al principio.
He puesto unos comentarios.
La funcion AgregarFila necesita que se le pase las dos variables fila y fil

Saludos.
\\//_
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
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Procedimiento

Publicado por Gustavo (24 intervenciones) el 14/10/2019 21:50:47
Hola Antoni.

Ya le había agregado estos parámetros y tampoco funcionó, me pide otros. Le agregué todos los parámetros (o sea 5) y tampoco funcionó.

Tu código no me da error, pero no inserta la fila.

Y ¿porqué el procedimiento imprimir() no requiere ningún parámetro?
Son todas variables locales, deberían ser reconocidas.
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
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Procedimiento

Publicado por Gustavo (24 intervenciones) el 14/10/2019 22:09:13
Antoni,no me dejan valorar tu respuesta. ¿?
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
Imágen de perfil de Gustavo
Val: 64
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Procedimiento

Publicado por Gustavo (24 intervenciones) el 21/10/2019 02:14:07
Pude solucionarlo.

En realidad no era un tema de los procedimientos, sino de antes.
La matiz tiene un ancho fijo, siempre las mismas n columnas (en este caso n=4)

Ahora así funciona:

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
import random
col, matriz = 4, []
 
# ---- Procedimiento para agregar una fila
def agregarFila ():
    matriz.append([])
    for i in range(col):
        matriz[len(matriz)-1].append(random.randint(200, 999)) # Incercion y Asignacion
 
# ---- Procedimiento para imprimr la matriz
def imprimir ():
    for i in range(len(matriz)):
        print ''
        for j in range(col):
            print matriz[i][j],
    print ''
 
# ---- Creación de la matriz inicial
for i in range(1):
    matriz.append([])
    for j in range(col):
        matriz[i].append([]) # Incercion
        matriz[i][j]=(random.randint(200, 999)) # Asignacion
 
# ---- Llamadas a los procedimiento
imprimir ()
agregarFila ()
imprimir ()
agregarFila ()
imprimir ()
agregarFila ()
imprimir ()
agregarFila ()
imprimir ()
 
print ''
raw_input('Fin.')

Gracias Antoni!



...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar