Autor
|
Tema: Problema contador python (Leído 4,863 veces)
|
runas3
Desconectado
Mensajes: 4
|
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. Es como el contador sigue funcionando onde hay x pero quiero que vaya al siguiente parámetro y no cuente la x pero no encuentro la manera de hacerlo. Haber si me podéis dar alguna pista o ayudarme gracias. 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)
Pongo link de la imagen(ejecución programa) que no me deja poner la imagen sola, https://ibb.co/kbf1na
|
|
|
En línea
|
|
|
|
animanegra
Desconectado
Mensajes: 287
|
A ver si entiendo tu problema, tu problema es que te pueden meter como parámetros cosas que no sean números y quieres saltártelos ¿no?
Tienes una función de las strings llamada isdigit() que devuelve true o false en caso de que sea o no un numero, simplemente comprueba el argumento que te están pasando y hasta que no sea un numero (osea que la función isdifit te diga true) lee el siguiente parámetro.
|
|
|
En línea
|
42 No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
|
|
|
runas3
Desconectado
Mensajes: 4
|
El usuario lo único que puedo poner son números pone el numero de filas y columnas, de la matriz y luego el numero inicial con el que empieza. Básicamente la matriz esta llena de números y luego lo que yo hago es poner x haciendo un triangulo con fors, pero al poner las x el contador no funciona correctamente. Si te fijas en la imagen que he puesto veras que esta el numero 13 x y luego 15 pues lo que quiero es que sea 14 y con los otros que siga el contador correctamente. He intentado poner este if pero no he conseguido que funcione. if matriu_inicial[num_files//2][num_files//2]=="x": contador=contador else: contador=contador+1 Con esto he intentado decir que cuando encuentre una x en esta posición de la matriz que contador sea igual al anterior.
|
|
|
En línea
|
|
|
|
animanegra
Desconectado
Mensajes: 287
|
a ver, si quieres que el contador sea igual an anterior. Simplemente no lo cambies y asi no pierdes el tiempo con instrucciones inutiles. La idea del programa es mostrar un triangulo de X en pantalla. ¿Para que utilizas una matriz? Usas cosas un tanto, complicadas viendo que lo que estas haciendo es empezar en el tema de programacion. Simplifica tu problema, porque lo estas enfocando realmente mal. 1 necesitas un contador que cuente la altura que tendra tu triangulo, se llama altura y empezará en un tamaño dado por el usario y terminara en 0. pinta una X por cada valor de la altura cada una en una linea diferente.
2 ahora planteate el problema de ¿que tengo que hacer en cada altura? Que será dibujar el ancho, empieza en lugar de dibujar un triangulo dibujando un cuadrado. Con lo que el problema se reduce a dibujar X seguidas en la misma linea. un numero ancho de veces.
3 Una vez que tienes eso modifica el programa para que en cada altura quites uno a la anchura que dibujas generando asi un triangulo.
Si lo tienes que meter en una matriz por exigencias del ejercicio, genera una matriz al principio y haz el mismo proceso que pintando en pantalla, usando los mismos indices de altura y anchura pero salvando el la X tambien en la matriz.
|
|
|
En línea
|
42 No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
|
|
|
runas3
Desconectado
Mensajes: 4
|
Estoy obligado a ponerlo en la matriz, y realmente el único problema que tengo es con el contador lo del triangulo sino me equivoco esta bien, lo siento seguramente lo he explicado mal. Voy a poner el enunciado de lo que estoy haciendo 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. Pongo aquí unas imágenes con los ejemplos del resultado que quiero que me de. Se puede ver que en el contador salta correctamente por ejemplo cuando esta en 12 y luego encuentra la x y en el siguiente pone 13, pues el problema que yo tengo es que se pone 14 https://ibb.co/bQRKqv
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
Comparto con animanegra que el planteo de solución está muy mal: 1)igual modifique lo básico del código para que muestre lo que quieres, usando la lógica antes expuesta 2)la solución al planteo del triángulo para mí, también está mal, pero usaré tu mismo código 3) supongo que si solo importa el resultado antes descripto ya con esto funciona. #-*- coding: utf -8 -*- filas=int(input("Cantidad de filas: ")) primero=int(input("Número inicial:")) matriz= [[0]*filas for a in range(filas)] numero_columna_inicial=filas//2-1 numero_columna_final=filas//2+1 for d in matriz: matriz[filas//2][filas//2]="x" descontar= 1 for q in range (filas//2+1,filas,1): for w in range (numero_columna_inicial,numero_columna_final+1,1): matriz[q][w]="x" descontar+=1 numero_columna_inicial=numero_columna_inicial-1 numero_columna_final=numero_columna_final+1 for f in range(filas): for c in range(filas): if matriz[f][c] == 0 : matriz[f][c]= primero primero+=1 for a in matriz: print(a)
Por supuesto no es absoluto! python da muchas formas de resolución, aunque traté de mantenerme en el código, algunas cosas las salté por obvias e innecesarias Saludos
|
|
« Última modificación: 1 Junio 2017, 00:05 am por tincopasan »
|
En línea
|
|
|
|
runas3
Desconectado
Mensajes: 4
|
Gracias por la respuesta!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con contador en C
« 1 2 »
Programación C/C++
|
-/lnkx/-
|
12
|
20,874
|
7 Diciembre 2011, 18:53 pm
por A.ABAENA
|
|
|
[Python] - Contador de palabras en frases
Python
|
ChicoMaravilla
|
4
|
31,442
|
18 Enero 2011, 21:17 pm
por Karcrack
|
|
|
[PYTHON] Contador de palabras
Python
|
ChicoMaravilla
|
2
|
11,061
|
5 Abril 2011, 20:47 pm
por Novlucker
|
|
|
[Python] Contador de edades
Python
|
sora_ori
|
2
|
3,120
|
20 Noviembre 2013, 15:29 pm
por sora_ori
|
|
|
Contador de tiempo en Python
Scripting
|
duRRR
|
3
|
10,419
|
27 Mayo 2015, 06:26 am
por 0x5d
|
|