🎨
Informática para ingeniería 2023-2024
  • Informática para ingeniería
  • Básico python
  • Estructuras de control
    • while
    • for
    • try...except
    • If, else, elif, while, for
    • Ejemplo. Ciclos anidados. Tablas de multiplicar
    • Método abreviado
    • ¿Qué hace zip() ?
  • Secuencias
  • Comparativas: Cadena, lista, tupla y conjunto
    • Ejemplos listas y funciones: Control de temperatura
    • Verificación del NIF
    • Ejemplo listas: control de temperaturas
  • Secuencias: Matriz
    • Definición: Matriz
    • Localizar valores únicos en una matriz
    • Ejemplo matrices: Suma y Multiplicación
    • verificar si una matriz es cuadrada
  • Funciones
    • Definición: funciones
    • Ejemplo de funciones
  • Módulos
    • Módulo. Definición
    • Ejemplos de Módulos: math y random
  • Método abreviado de comprensión de listas...
    • Comprensión de listas
  • Funciones- Matriz-Ejemplos
    • Ejemplo, cálculo de Nómina mensual
    • Ejemplo, cálculo de Nómina mensual (desde el programa principal)
    • Menú, matriz y funciones
    • Localizar valores únicos en una matriz. Usar Funciones
    • Ejemplo funciones, matriz, archivos: Recuento de votos
    • Matrices 2ª Prueba Evaluación Continua. Curso 2018-2019 Parcial. Prof MRD
    • Prueba Evaluación Continua. Curso 2018-2019. Examen 1. Prof. MRD
    • Gestión de una matriz de números enteros
  • Ejecutable
    • Crear un programa ejecutable
  • Archivo (ficheros)
    • Definición: archivos (ficheros)
  • Ejemplos de Matriz y archivos (ficheros)
    • ¿Cómo se multiplican dos matrices?
    • Crear una matriz a partir de un archivo
    • Pedir datos, guardarlos en una matriz y en un archivo
    • Cálcular la media de unos datos almacenados en un archivo
    • Leer archivo, modificar datos y guardarlos
  • Interfaz Gráfica
    • Definición: Interfaz Gráfica de Usuario (IGU)
      • Label
      • Button
      • Radiobutton y Checkbutton
      • LabelFrame
      • Listbox
      • Entry
      • Características comunes de Label, Entry, button, radiobutton checkbutton
      • ttk.Combobox
      • Tamaño de una ventana
    • Ejemplo de Entorno gráfico: RadioButton
    • Visualizar la especialidad y nombre de un alumno
    • Visualizar los datos introducidos
    • Sumar 10 a un número introducido
    • Cálculo del área de un triángulo
    • Cálculo del área de un Círculo. Y dibujo de un círculo
    • ¿Dos números son divisibles?
    • Introducir valores y graficar
    • Ejemplo de botón, lista
  • Ejemplos de interfaz gráfica y archivos
  • Entorno gráficos y archivos
    • Almacenar los datos de un alumno
Con tecnología de GitBook
En esta página
  • Requisitos del programa:
  • Programa principal
  1. Funciones- Matriz-Ejemplos

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()

AnteriorPrueba Evaluación Continua. Curso 2018-2019. Examen 1. Prof. MRDSiguienteCrear un programa ejecutable

Última actualización hace 29 días