Python - Problema con el contador

 
Vista:
sin imagen de perfil

Problema con el contador

Publicado por runas3 (3 intervenciones) el 31/05/2017 21:59:56
Hola a todos,os explico el problema que tengo.

Estoy haciendo un ejercicio, que es crear una matriz i hacer un triangulo con x, en eso no hay problema, solo que el usuario tiene que entrar un numero inicial y hay un contador que va sumando los números, pero cuando hay una x el contador no lo hace bien por ejemplo habría 13, x, 15 y así no, tendría que ser 13 x 14.
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
def omple_simplista(xifra,num_files) :
    matriu_inicial=[['' for i in range(num_files)] for i in range(num_files)]
    contador=0
    for a in range(num_files):
        for b in range(num_files):
            matriu_inicial[a][b]=int(xifra+contador)
            contador=contador+1
    return matriu_inicial
 
num_files = int(input(" quantes files "))
xifra= int(input(" primer element "))
 
matriu=[]
matriu=omple_simplista(xifra,num_files)
 
numero_columna_inicial=num_files//2-1
numero_columna_final=num_files//2+1
 
for d in matriu:
    matriu[num_files//2][num_files//2]="x"
 
for q in range (num_files//2+1,num_files,1):
    for w in range (numero_columna_inicial,numero_columna_final+1,1):
        matriu[q][w]="x"
    numero_columna_inicial=numero_columna_inicial-1
    numero_columna_final=numero_columna_final+1
 
for a in matriu:
    print(a)



Os pondré el enunciado por si no lo habéis entendió del todo

Ex1.Una matriz es simplista si es una matriz cuadrada de nxn (n es non) y cada elemento de la matriz es igual al elemento anterior incrementado en 1, excepto el triángulo inferior, que tiene el carácter X.
Crea un programa que escribe una matriz simplista según los parámetros que escribe el usuario.


Esta seria una imagen de lo que me sale actualmente se puede observar que el contador lo hace mal salta de 13 a 15 es como que lo pone en la x y no tiene que ser así.
a

Estos son 2 ejemplos de como debería salir
b

Espero que alguien me pueda ayudar 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 kip
Val: 1.148
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema con el contador

Publicado por kip (257 intervenciones) el 01/06/2017 01:55:21
Hola, el problema lo complicas cuando en lugar de colocar las marcas de X en la matriz y en base a eso sumar primero haces la suma de los valores que iran dentro de esta y luego colocas las marcas que deberian ir.

Aqui he hecho algo sencillo a ver si te sirve:

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
filas = int(input('Ingrese num de filas: '))
inicio = int(input('Ingrese num de inicio: '))
 
xFila = filas / 2
xCol = [xFila]
 
marca = 'X'
 
matriz = [[] for i in range(0, filas)]
 
for fila in range(0, filas):
    xValCol = []
    xValFila = True if xFila <= fila else False
    for col in range(0, filas):
        if xValFila and col in xCol:
            matriz[fila].append(marca)
            xValCol.append(col)
        else:
            matriz[fila].append(inicio)
            inicio += 1
    for col in xValCol:
        xCol = list(set(xCol + [col + 1, col - 1]))
 
for fila in matriz:
    print(fila)

Pruebalo y nos cuentas !!
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
sin imagen de perfil

Problema con el contador

Publicado por runas3 (3 intervenciones) el 01/06/2017 12:49:06
Gracias por tu respuesta me sirve :)
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
sin imagen de perfil
Val: 1.844
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema con el contador

Publicado por tincopasan (565 intervenciones) el 01/06/2017 05:37:25
ya te contesté esta misma pregunta en otro foro!
kip, tu código tiene el problema que solo funciona con filas pares!
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
Imágen de perfil de kip
Val: 1.148
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema con el contador

Publicado por kip (257 intervenciones) el 01/06/2017 06:24:33
Hola Tincopasan, en aquello tienes razon, pero me he basado en los ejemplos que colocaron arriba, de hecho funciona con filas impares nada mas no con las pares como estas mencionando ya que con las impares se tiene la opcion de iniciar la marca de la 'x' a partir del num intermedio entre las filas, asi:

1
2
3
4
5
[2, 3, 4, 5, 6]
[7, 8, 9, 10, 11]
[12, 13, 'X', 14, 15]
[16, 'X', 'X', 'X', 17]
['X', 'X', 'X', 'X', 'X']

Si te das cuenta al ser impares como comente mas arriba puedo iniciar a colocar la marca o comenzar a dibujar el triangulo inferior en la tercera fila del tercer elemento....

Ahora bien la unica solucion que veo para poder trabajar con filas pares podria ser esta:

1
2
xFila = filas / 2
xCol = [xFila] if filas % 2 else [xFila - 1, xFila]

De esa forma obtendriamos algo asi en una matriz con 4 filas y que empiece por 2:

1
2
3
4
[2, 3, 4, 5]
[6, 7, 8, 9]
[10, 'X', 'X', 11]
['X', 'X', 'X', 'X']
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
sin imagen de perfil

Problema con el contador

Publicado por runas3 (3 intervenciones) el 01/06/2017 12:49:36
Solucionado gracias
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