Gestión de una matriz de números enteros
Objetivo: Desarrollar un programa en Python que permita al usuario gestionar una matriz cuadrada de números enteros mediante un menú interactivo. El programa principal tiene una sola línea llamada main(). El programa debe mostrar el siguiente menú principal de forma repetida hasta que el usuario decida salir:
--- MENÚ ---
1. Introducir matriz
2. Mostrar diagonal de la matriz
3. Mostrar número más grande de una fila
4. Visualizar matriz
5. Cambiar un elemento
6. Salir
Requisitos del programa:
Descripción detallada de cada opción y su función asociada:
1. Introducir matriz
Función: crear_matriz(matriz)
Parámetro: lista vacía matriz
Pide el tamaño de la matriz (entre 1 y 9) y los elementos uno por uno (entre -100 y 100).
Devuelve la matriz creada (lista de listas).
2. Mostrar la diagonal principal
Función: obtener_diagonal(matriz)
Parámetro: matriz previamente introducida.
Muestra y devuelve los valores de la diagonal principal.
3. Mostrar el número más grande de una fila
Función: fila_mayor(fila, matriz)
Parámetros: índice de la fila (empezando en 0) y la matriz.
Devuelve el valor máximo de esa fila.
4. Visualizar matriz
Función: imprimir_matriz(matriz)
Devuelve en una cadena que se muestra en el programa principal.
5. Cambiar un elemento
Función: cambiar_elemento(fila, columna, matriz)
Parámetros: fila, columna (ambos desde 0) y la matriz.
Pide al usuario un nuevo valor (entre -100 y 100) y lo sustituye en la matriz.
6. Salir del programa
Finaliza la ejecución mostrando el mensaje "Fin del programa."
Programa principal
def pedir_datos(mensaje, limite_inferior, limite_superior):
#Función vaida datos dentro de un rango
dato_valido = False
while not dato_valido:
try:
dato = int(input(mensaje))
if dato > limite_inferior and dato < limite_superior:
dato_valido = True
else:
print("Has tecleado un dato fuera de rango.")
except:
print("Has tecleado un carácter inválido.")
return dato
def crear_matriz(matriz):
#Crea la matriz
tamano = pedir_datos("Dame el tamaño de la matriz (1-9): ", 0, 10)
for i in range(tamano):
fila = []
for j in range(tamano):
elemento = pedir_datos(f"Elemento [{i+1},{j+1}]: ", -100, 100)
fila.append(elemento)
matriz.append(fila)
return matriz
def imprimir_matriz(matriz):
#Crea un cadena con los datos de una matriz
resultado = ""
for fila in matriz:
for elemento in fila:
resultado += str(elemento) + "\t"
resultado += "\n"
print(resultado)
return resultado
def obtener_diagonal(matriz):
#Obtiene los datos de la diagonal, misma fila que columna
datos=[]
for i in range(len(matriz)):
datos.append(matriz[i][i])
return datos
def fila_mayor(fila, matriz):
#Obtiene los valor más grande de una fila
mayor = max(matriz[fila])
return mayor
def cambiar_elemento(fila, columna, matriz):
#Reemplazo un dato por otro, de una fila y columna previamente introducida por el usuario
nuevo_valor = pedir_datos("Dame el nuevo dato (-100 a 100): ", -101, 101)
matriz[fila][columna] = nuevo_valor
return matriz
def menu():
print("\n--- MENÚ ---")
print("1. Introducir matriz ")
print("2. Mostrar diagonal ")
print("3. Valor máximo de una fila")
print("4. Visualizar matriz ")
print("5. Cambiar un elemento ")
print("6. Salir")
def main():
matriz = []
continuar = True
while continuar:
menu()
opcion = pedir_datos("Dame la opción (1 a 6): ", 0, 7)
if opcion == 1:
matriz = []
matriz = crear_matriz(matriz)
elif opcion == 2:
if len(matriz) != 0:
diagonal=obtener_diagonal(matriz)
print("Diagonal de la matriz:", *diagonal)
else:
print("Primero debes introducir la matriz con la opción 1.")
elif opcion == 3:
if len(matriz) != 0:
mensaje_fila = "Introduce el número de fila (1 a " + str(len(matriz)) + "): "
fila = pedir_datos(mensaje_fila, 0, len(matriz) + 1)
fila = fila - 1
maximo = fila_mayor(fila, matriz)
print("El valor máximo de la fila", fila + 1, "es", maximo)
else:
print("Primero debes introducir la matriz con la opción 1.")
elif opcion == 4:
if len(matriz) != 0:
resultado=imprimir_matriz(matriz)
print(resultado)
else:
print("Primero debes introducir la matriz con la opción 1.")
elif opcion == 5:
if len(matriz) != 0:
mensaje_fila = "Introduce la fila (1 a " + str(len(matriz)) + "): "
fila = pedir_datos(mensaje_fila, 0, len(matriz) + 1) - 1
mensaje_columna = "Introduce la columna (1 a " + str(len(matriz[0])) + "): "
columna = pedir_datos(mensaje_columna, 0, len(matriz[0]) + 1) - 1
matriz=cambiar_elemento(fila, columna, matriz)
else:
print("Primero debes introducir la matriz con la opción 1.")
elif opcion == 6:
print("Fin del programa.")
continuar = False
# Programa principal
main()
Última actualización