ayuda con python urgente!!

Iniciado por cartylanz, 20 Junio 2015, 21:02 PM

0 Miembros y 1 Visitante están viendo este tema.

cartylanz

Hola buen dia , soy nuevo en el foro y tambien en python , estoy cursando este lenguaje de programacion llevo 2 meses y el martes es mi examen final , la verdad antes de todo quiero decirles que le dedique tiempo pero no hay forma hay cosas en las que me trabo y no encuentro por ningun lado , me he quedado estos dias hasta muy tarde y opte por buscar ayuda en grandes como ustedes .

esto es un examen espejo tengo como 3 pero no termino aun con este!! Los temas seran en jugar con una matriz como encontrar las diagonales , o sumarlas o multiplicarlas , verificarlas , la transpuesta de una amtriz , etc...

en esta ocacion me trabe en la parte que dice !! que valide la diagonal de una matriz sean ceros(0) , aca les copio el examen espejo y lo que yo estoy avanzando


Código (python) [Seleccionar]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# ******************************************************************************
# MATERIA : Informática
# EXAMEN : Especificación de Algoritmos 1er Semestre 2014
# NOMBRE :
# MATRICULA :
# CARRERA :
# COMISION : Comisión 2.4
# ******************************************************************************
#
# Estimado alumno: No modifique nada del código que le proveemos y
# use los procedimientos o funciones que estan definidas.
#
#
#
# Realice un programa en Python con las siguientes caracteristicas:
#
#
#  1) Se solicita que la cantidad de filas y columnas de una matriz CUADRADA se ingrese por teclado.
#
#
#  2) Se debe validar que la cantidad de filas y columnas son mayores a cero.
#     De no cumplirse la condición, volver a solicitar dicho valor hasta
#     que éste sea válido.
#
#
#  3) Se deben ingresar los valores de la matriz por el teclado, los valores deben ser numeros enteros
#     pero NO es necesario verificarlo
#
#
#  4) Se debe crear una función que reciba una matriz y verifique que sus elementos sean
#     numeros pares, caso contrario el elemento debe ser remplazado por un 0
#
#     El nombre de la función es obtener_matriz_de_pares y su encabezado
#     ya se encuentra declarado a continuación del enunciado.
#     No se deben modificar ni el nombre ni los parámetros de la función.
#
#
#  5) Se debe mostrar la matriz ingresada por consola, bajo el título " \\ Matriz Ingresada \\ ".
#     La impresión de la matriz debe realizarse utilizando el formato de matriz, tal y
#     como se muestra en el ejemplo de ejecución al final del enunciado.
#    
#     Luego se debe mostrar la matriz de elementos pares bajo el título " \\ Matriz Pares \\ ".
#     La impresión de la matriz debe realizarse utilizando el formato de matriz, tal y
#     como se muestra en el ejemplo de ejecución al final del enunciado.
#
#
#  6) Se debe crear una función que reciba una matriz y verifique que todos los
#     elementos de la diagonal principal sean cero. Si se cumple la condición,
#     la función devolverá True. En caso contrario, devolverá False.
#
#     El nombre de la función es verificar_valores_diagonal y su encabezado
#     ya se encuentra declarado a continuación del enunciado.
#     No se deben modificar ni el nombre ni los parámetros de la función.
#
#  7) Se debe crear una función que reciba una matriz y devuelva como valor de
#     retorno la cantidad de elementos diferentes de cero en su diagonal.
#
#     El nombre de la función es contar_no_nulos_diagonal y su encabezado
#     ya se encuentra declarado a continuación del enunciado.
#     No se deben modificar ni el nombre ni los parámetros de la función.
#
#
#  8) Si se cumple que los elementos de la diagonal son todos nulos,
#     mostrar por consola el siguiente mensaje:
#
#     " """ Los elementos de la diagonal son todos cero """ ".
#
#     En caso de no cumplirse la condición, mostrar el mensaje:
#
#     " """ Los elementos de la diagonal no son todos cero, hay x elementos no nulos """ ".
#
#     Donde x debe remplazarse por la cantidad de elementos no nulos en la matriz.
#
#     Los mensajes deben respetarse tal y como lo solicita el enunciado y como se muestran
#     en los ejemplos de ejecución.
#
#
# ******************************************************************************
#
# ****     Ejemplo de Ejecución de caso particular 1     ****
#
# Filas y Columnas: 4
#
# Elemento (0,0): 1
# Elemento (0,1): 0
# Elemento (0,2): 5
# Elemento (0,3): 9
# Elemento (1,0): 0
# Elemento (1,1): 15
# Elemento (1,2): 0
# Elemento (1,3): 7
# Elemento (2,0): 0
# Elemento (2,1): 5
# Elemento (2,2): 0
# Elemento (2,3): 86
# Elemento (3,0): 45
# Elemento (3,1): 37
# Elemento (3,2): 10
# Elemento (3,3): 87
#
# \\ Matriz Ingresada \\
#
#  1   0   5   9
#  0  15   0   7
#  0   5   0  86
# 45  37  10  87
#
# \\ Matriz Pares \\
#
#  0   0   0   0
#  0   0   0   0
#  0   0   0  86
#  0   0  10   0
#
#
# """ Los elementos de la diagonal son todos cero """
#
# ******************************************************************************
#
# ****     Ejemplo de Ejecución de caso particular 2     ****
#
# Filas y Columnas: 2
#
# Elemento (0,0): 2
# Elemento (0,1): 3
# Elemento (1,0): 5
# Elemento (1,1): 9
#
# \\ Matriz Ingresada \\
#
#  2   3
#  9   5
#
# \\ Matriz Pares \\
#
#  2   0
#  0   0
#
#
#
# """ Los elementos de la diagonal no son todos cero, hay 1 elementos no nulos """
#
# -----------------------------------------------------------------------------
#
# *******       Tabla de Corrección        *******
#-------------------------------------------------------------------                                                                
# - Ingreso y Validación de Datos :                  20 puntos.| 10|
#-------------------------------------------------------------------  
# - Programa Principal :                             15 puntos.|  0|
#-------------------------------------------------------------------  
# - Impresión de Resultados y Formato :              20 puntos.|  5|
#-------------------------------------------------------------------  
# - Función obtener_matriz_de_pares :                20 puntos.|  5|
#-------------------------------------------------------------------  
# - Función verificar_valores_diagonal :             10 puntos.| 10|
#-------------------------------------------------------------------  
# - Función contar_no_nulos_diagonal :               10 puntos.|  0|
#-------------------------------------------------------------------  
# - Comentarios y Semántica :                         5 puntos.|  0|
#-------------------------------------------------------------------  
#                                          TOTAL :  100 puntos.| 30|
#-------------------------------------------------------------------  
#
#
# ******************************************************************************


# Definición de Funciones
##
##def obtener_matriz_de_pares(mat):
##    return
##
##def verificar_valores_diagonal(mat) :
##    return
##
##def contar_no_nulos_diagonal(mat) :
##    return


# Programa Principal
# ...complete el codigo aqui...




Y ESTO ES LO QUE YO AVANZE :

def obtener_matriz_de_pares (mat):
 A=mat*1
 print"Matriz de pares"  
 for i in range (len(mat)):
   for j in range (len(mat[0])):
     A[i][j]=mat[i][j]
   
   
 for i in range (len(A)):
   for j in range (len(A[0])):
     if A[i][j] % 2 !=0 :
       A[i][j]= 0
       
     print A[i][j],
   print
 return A
   
def verificar_valores_diagonal(mat) :
 B=mat*1
 print"diagonal principal"  
 for i in range (len(mat)):
   for j in range (len(mat[0])):
     B[i] = mat[i][0+i]
 for i in range (len(B)):
   print B[i],
 print
 

     

   
   
##    print B[i],
##  print
       
     
       





#menu principal
fil = int(raw_input("ingrese una fila: "))
while fil < 0:
 fil = int(raw_input("ingrese nuevamente la fila: "))
col = int(raw_input("ingrese una columna: "))
while col < 0:
 col = int(raw_input("ingrese nuevamente la columna: "))
 
M=[]

if fil == col :
 
   for i in range (fil):
     M.append (col*[0])
 
   for i in range (fil):
     for j in range (col):
       M[i][j]= int(raw_input("componente: (%d,%d)"%(i,j)))
   
   for i in range (len(M)):
     for j in range (len(M[0])):
       print M[i][j],
     print
     

   
     
   
else :
 print "la matriz no es cuadrada"
 
F=obtener_matriz_de_pares (M)
verificar_valores_diagonal(F)

##raw_input ()


claramente la parte de el def diagonal princiapl aun no lo se , como hacer que me salga true or false y como hacer que cuando haya un 0 me salga ese print y cuando todos sean 0 el otro

123456

#1
Cita de: cartylanz en 20 Junio 2015, 21:02 PM
claramente la parte de el def diagonal princiapl aun no lo se

Bueno, mi lenguaje principal es java ahora mismo, en python no he trabajado con matrices, pero la diagonal la deberías de hacer con un for para filas y otro para columnas, una vez hecho esto, deberías de poner un if(i==j) dentro del bloque de los for. Quedaría más o menos así (en java, espero que te pueda ayudar a tomar la idea)


for(i=0;i<matriz.length();i++){//.length() define el tamaño de la matriz
    for (j=0;j<matriz.length();j++){
         if(i==j){
               // BLOQUE SENTENCIAS PARA LA DIAGONAL
         }
   }
}



Lo de true o false es con el tipo booleano, si se cumple la sentencia que le hayas puesto al imprimir te dira si true o false

Lamento no poder ayudarte en py, pero si llevas tiempo en programación lo entenderás sin problemas

explorer

#2
No necesitas un doble bucle. Con uno te vale, ya que el índice que recorre las filas es el mismo que las columnas (con eso, accedemos a la diagonal).

Código (python) [Seleccionar]
if mat[i][i] == 0: