UNIDAD 4

Programa 1:

#Intermezzo


li=[(x,y) for x in [1,2,3,4] for y in [3,1,4] if x!=y]


print(li)


Programa 2:

#funciones lambda


#Python lambdas are only a sorthand notation if you're


#too lazy you difine a function.


def suma(a,b):


return a+b


"""


Las dos anteriores son validas al ser lo mismo"""


#lambda a,b:a+b


s=lambda a,b:a+b           #son intemezzo, son funciones de no mas de una linea y además son funciones simples


print(s(2,3))


print((lambda a,b:a+b)(6,7))



Programa 3:

#RECURSIVIDAD


def fun(lambda_func):


return lambda_func(2,4)




print(fun(lambda a,b:a+b))             #función lambda recursiva se dice así porque es cuando la función se manda a llamar a si sola


Programa 4:

"""pedir nombre, apellido paterno, apellido materno

cada uno va a ser una lista independiente y después hacer un histograma de las vocales

con asteriscos


a: **

e: *

i: ****

u: *

"""


nombre = []


apellidomaterno = []

apellidopaterno = []


def cap_nombre():

  while True:


    try:

      n = input("Escribe tu nombre: ").lower()             #el .lower convierte mayúsculas a minúsculas

      if n.isalpha():  #verifica si el nombre esta dado por letras

        return n 


      else:


        print("Solo letras .")

    except:

      print("Upsi :)")

def cap_apellidopaterno():

  while True:

    try:

      n = input("Escribe tu apellido paterno: ").lower()            #el .lower convierte mayúsculas a minúsculas


      if n.isalpha():                          #verifica si el nombre esta dado por letras


        return n                                 #regresa n si isalpha es verdadero


      else:


        print("Solo letras ")


    except:


      print("Error")

  


def cap_apellidomaterno():


  while True:


    try:


      n = input("Escribe tu apellido materno: ").lower()     #el .lower convierte mayúsculas a minúsculas


      if n.isalpha():  #verifica si el nombre esta dado por letras o si tiene caracteres diferentes


        return n 


      else:


        print("Solo letras")


    except:


      print("Error")



def cont_vocales(nomapellidos):


  vocales = {'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}


  for letra in nomapellidos:


    try:


      if letra.lower() in vocales:


        vocales[letra.lower()] += 1


    except:


      print("Incontable")


  return vocales

nombre.append(cap_nombre())

apellidopaterno.append(cap_apellidopaterno())

apellidomaterno.append(cap_apellidomaterno())




nom_completo = nombre[0] + " " + apellidopaterno[0] + " " + apellidomaterno[0]


print("El nombre al cual se le contaran sus vocales: ",nom_completo)


contvocales_comp = cont_vocales(nom_completo)


print("\nGrafica del nombre completo:")


for vocal, cantidad in con vocales_comp.items():


  print(f"{vocal}: {'*' * cantidad}")


Programa 5:

import time                                 #Para ver la hora real en la que esta la laptop, verificar la diferencia de                                                        segundos entre cada laptop (qr)


hora=time.time()


local=time.localtime(hora)


h=local.tm_hour


m=local.tm_min


s=local.tm_sec


#print(f"{h}:{m}:{s}")


print(h,":",m,":",s)



Programa 6:

#leer archivos


#archivos


#archivo=open(prueba.txt)


archivo=open("prueba.txt","r")


contiene=archivo.read() #lee todo el documento


print(contiene)


archivo.close() 


Programa 7:

#este programa ayuda a escribir adentro de el archivo


b=True


while(b):


nom=input("Dame el nombre del archivo ")


if nom.isalpha():


b=False


noma=nom+".txt"


print(noma)


archivo=open(noma,"a+") 


contenido=archivo.read()


final=archivo.tell()


print("Tell", final)


archivo.write('\n **** linea y ya ****')


archivo.seek(final)


nuevo=archivo.read()


print(nuevo)


archivo.close()


Programa 8:

#este programa ayuda a escribir dentro de el archivo


b=True


while(b):


nom=input("Dame el nombre del archivo: ")


if nom.isalpha():


b=False




noma=nom+".txt"


print(noma)


archivo=open(noma,"a+") 


contenido=archivo.read()


final=archivo.tell()


print("Tell", final)


archivo.write('\n **** linea y ya ****')


archivo.seek(final)


nuevo=archivo.read()


print(nuevo)


archivo.close()


Programa 9:

#leer un archivo y verificar que  este se haya cerrado de forma correcta


arch=open("Programa_4.py","r+")

cont=arch.read()

nom=arch.name

modo=arch.mode                 #modo en el que se abre el archivo

enc=arch.encoding

print(nom)

print("modo",modo)

print("contenido",cont)

print("codificacion",enc)

arch.close()

if arch.closed:

print("cerrado correcto")

else:

print("sigue abierto")



Programa 10:

with open ("P9U4.py", "r") as archivo:             #Forma extra y valida de también poder abrir archivos 

con=archivo.read()

print(con)

print(archivo.closed)



Programa 11:

import glob
import os

lista = glob.glob("*.py")
for i in lista:
    print(i)

ar = os.listdir("C:\\Programacion_Cristal\\")
print(os.getcwd())


Programa 12:

import os
ar=os.listdir("C:\\Programacion_Cristal\\")
print(os.getcwd())
print(os.curdir)


Programa 13:

#lista
lista=['lunes', 'martes', 'miércoles', 'jueves', 'viernes','sábado','domingo']
tam=len(lista)
alias=open('datos2.txt', 'w')
for linea in range (tam):
print(linea)
if(linea==6):
alias.write(lista[linea])
else:
alias.write(lista[linea]+"\n")
alias.close()

alias=open('datos2.txt', 'r')
c=alias.read()
print(c)
alias.close()


Programa 14:
#Programa que haga lo mismo que lo anterior, pero la lista la da el usuario junto con el nombre del archivo.
#Usuario ingresa los datos, ingresa nombre del archivo e imprime.

#TAREA

cantidad=int(input("Cantidad de datos a  ingresar: "))
lista=[]

for i in range(cantidad):
    dato=input(f"Ingrese el dato #{i + 1}: ")
    lista.append(dato)

nombre_archivo=input("Ingresa el nombre del archivo (por ejemplo: datos1.txt): ")

alias=open(nombre_archivo, 'w')
for linea in range(cantidad):
    print(linea) 
    if linea==cantidad - 1:
        alias.write(lista[linea]) 
    else:
        alias.write(lista[linea] + "\n")
alias.close()

alias=open(nombre_archivo, 'r')
c=alias.read()
print("\nContenido del archivo:")
print(c)
alias.close()


Programa 15:
#Programa que a partir del anterior guarde solo números 


cantidad=int(input("Cantidad de datos a ingresar: "))
lista=[]

for i in range(cantidad):
    dato = input(f"Ingrese un número #{i + 1}: ")
    dato = str(dato)  
    if dato.isdigit():
        lista.append(dato)
    else:
        print("Error. Ingresa un numero")

nombre_archivo = input("Ingresa el nombre del archivo (por ejemplo: datos1.txt): ")
alias=open(nombre_archivo, 'w')
for linea in range(cantidad):
    print(linea) 
    if linea==cantidad - 1:
        alias.write(lista[linea]) 
    else:
        alias.write(lista[linea] + "\n")
alias.close()

alias=open(nombre_archivo, 'r')
c=alias.read()
print("\nContenido del archivo:")
print(c)
alias.close()

suma=sum(int(numero) for numero in lista)
print(f"\nLa suma de los números es: {suma}")
'''
Ahora sumar todo
'''

Programa 16:
                                                #Para graficar en Python
from matplotlib import pyplot as plt
plt.plot([1,2,3],[4,5,6])
plt.show()


Programa 17:

import numpy as np
import matplotlib.pylab as plt
x=np.linspace(-1,1,50)
y1=2*x
y2=2*(x)**2+1
y3=2*(x)**3-2
plt.figure(num='Grafico de funciones lineas')
plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(x,y3)
plt.show()


Programa 18:


#Proyecto de unidad
'''
MiniSIE
pedir por materia un archivo
programación
pedir numero de estudiantes
pedir el numero de unidades
por cada unidad capturar calificaciones
eso se queda en un archivo, en el nombre de la materia
dato derivado, van a obtener promedio de cada estudiante
y de la materia
grafica primera

graficar segunda el promedio de cada materia, la media
la mediana y la moda.
Para al menos tres materias:

Programación 
Alex Turner 60 78 90 56 78
Promedio de Alex Turner es: 72.5 #es un dato derivado
Lana Del Rey 89 90 78 67 89
Sia Furler 89 78 90
Florence Welch 89 78 98 67 89
se guarda en el archivo programacion.txt
archivos son: promedio  media      mediana   moda
programación 90 78 67 78
calculo 78 67 89 67
circuitos 89 90 78 67
graficar
'''


import matplotlib.pyplot as plt                                          #grafica
import statistics                                                 #realizar los cálculos de la media, mediana y moda

def obtenercali(unidades):                                 #esta función obtiene las calificaciones de las unidades
    calificaciones = []                                                  #ciclo for con una lista vacía para guardar calificaciones
    for i in range(unidades):                                             #hace la cantidad de veces de unidades, se cicla
        while True:        
            try:
                calificacion = float(input(f"Ingrese la calificación para la unidad {i + 1}: ")) #para completar las unidades
                if 0 <= calificación <= 100:                             #agrega la calificación a la lista calificaciones
                    calificaciones.append(calificacion)
                    break
                else:
                    print("La calificación está fuera del rango.")
            except:                                                       #para en caso de poner signos o letras
                print("Solo números porfis...")
    return calificaciones                                                 #todo se guarda en la lista calificaciones

def calcular_promedio(calificaciones): #funcion para calcular el promedio de los alumnos
    if calificaciones:                                                  
        return sum(calificaciones) / len(calificaciones)                 #para que se regrese a la lista
    return 0
                                                                         
def guardar_archivo(materia, registros):         #función guarda los datos de la materia. archivos y registros en los documentos de texto
    try:
        with open(f"{materia}.txt", "w") as archivo:                     #abre archivos en modo escritura f" para guardar nombres de la materia, el w es para escribir y la r para leer
            for registro in registros:                                   #intera el archivo en los registros
                archivo.write(registro + "\n")                           #el registro lo escribe y lo pone abajo
        print(f"Datos guardados en {materia}.txt")                       #solo para saber que todo se guardo bien en los archivos de la materia
    except:                                                              #en caso de que el try no haya funcionado
        print("Error al intentar guardar los datos en el archivo.")      

def datos_materia():                                                     #funcion pide nombre de materia
    while True:
        try:
            materia = input("Ingrese el nombre de la materia: ").strip().lower() #es para limpiar espacios en blanco y se queda en minúsculas
            break                                                        
        except:
            print("Cometiste un error...")

    while True:                                                          #pedir numero de estudiantes
        try:
            num_estudiantes = int(input("Ingrese el número de estudiantes: ")) 
            if num_estudiantes > 0:                                      #rompe el ciclo
                break
            else:
                print("El número de estudiantes debe ser mayor que cero.")
        except:
            print("Solo acepto números positivos ")                 #regresa al try

    while True:                                                          #pedir numero de unidades
        try:
            num_unidades = int(input("Ingrese el número de unidades: "))
            if num_unidades > 0:
                break
            else:
                print("El número de unidades debe ser mayor que cero.")
        except:
            print("Escribe números positivos")

    registros = []
    prom_estudiantes = {} #promedios de los estudiantes
    calificaciones_materia = [] #calificaciones por materia

    for i in range(num_estudiantes):                                     
        nombre_estudiante = input(f"Ingrese el nombre del estudiante {i + 1}: ").strip() 
#toma como una sola palabra

        calificaciones = obtenercali(num_unidades)                       #llama a la función
        calificaciones_materia.extend(calificaciones)                    #agrega las calificaciones totales a la materia
        promedio_estudiante = calcular_promedio(calificaciones)          #variable, llama la función calcular con la lista 
        prom_estudiantes[nombre_estudiante] = promedio_estudiante        
        registro = f"{nombre_estudiante} {' '.join(map(str, calificaciones))} Promedio: {promedio_estudiante:.2f}"                                                     #crea cadena
        registros.append(registro)                                         #agrega a ala cadena registros en la lista registros
        print(f"El promedio de {nombre_estudiante} es: {promedio_estudiante:.2f}") #imprimir promedio

'''
registro = f"{nombre_estudiante} {' '.join(map(str, calificaciones))} Promedio: {promedio_estudiante:.2f}":
{' '.join(map(str, calificaciones))}: Esta parte convierte la lista de calificaciones en una cadena de texto separada por espacios.
map(str, calificaciones): Aplica la función str() (que convierte a cadena) a cada elemento de la lista calificaciones.
' '.join(...): Une los elementos convertidos en cadenas con un espacio entre ellos.
{promedio_estudiante:.2f}: Formatea el promedio para que tenga dos decimales. 

#Para que el promedio tenga dos decimales
'''

guardar_archivo(materia, registros)
    return materia, prom_estudiantes, calificaciones_materia             #todo se guarda
#HASTA AQUI

def graficar_promedios_estudiantes(materias_y_promedios):
    plt.figure(figsize=(10, 6))                                          #para el tamaño de las barras y crea una nueva figura
    for materia, promedios in materias_y_promedios.items():              #intera sobre el diccionario de materias y promedios
        estudiantes = list(promedios.keys())                             #devuelve pares
        #obtiene nombre de estudiantes el .keys son las claves y devuelve la lista con los nombres
        promedios_valores = list(promedios.values())                     #esta lista son los valores de los promedios
        plt.bar(estudiantes, promedios_valores, label=materia)
    plt.xlabel("Estudiantes")
    plt.ylabel("Promedio")
    plt.title("Promedios de Estudiantes por Materia")                    #para titulo
    plt.xticks(rotation=45, ha="right")                                  #rota las etiquetas 45 grados y alinea las etiquetas a la drecha 
    plt.tight_layout()                                                   #ajusta el espacio
    plt.legend()                                                         #mostrar la leyenda del grafico y mostrar que materia correspinde a que color de barra                  
    plt.show()                                                           #mostrar el grafico

def estadistica_materias(calificaciones_materias_dos):                   #nueva función calcular media, mediana y moda
    estadísticas = {}
    for materia, calificaciones in calificaciones_materias_dict.items(): #intera sobe el diccionarios de las calificaciones de las materias
        promedio = calcular_promedio(calificaciones)                     #manda llamar a la función de calcular promedio
        mediana = statistics.median(calificaciones)                      
        try:                                                             
            moda = statistics.mode(calificaciones)
        except:
            moda = "No hay moda"
        estadisticas[materia] = (promedio, mediana, moda)
    return estadisticas         

def graficar_estadisticas_separadas(estadísticas): #graficar mediana, moda y media
    materias = []                                                                                             # lista de nombres de materias
    promedios = []                                                                        # lista de promedios (medias) por materia
    medianas = []                                                                                           # lista de medianas por materia
    modas = []                                                                                                    # lista de modas por materia
    
    for materia, (promedio, mediana, moda) in estadisticas.items():         #se tiene el nombre de la materia     
#y los valores de las tuplas de cada materia, el .items convierte el diccionario en pares (clave, valor)

        materias.append(materia)                                             #agrega el nombre de la materia a la lista
        promedios.append(promedio)                                                     #agrega el promedio a la lista
        medianas.append(mediana)                                                        #agrega la mediana a la lista
        modas.append(0 if moda == "No hay moda" else moda)           #agrega 0 si no hay moda y si no                                                                                                                 agrega la moda

    # Gráfica de promedios
    plt.figure(figsize=(10, 6))
    plt.bar(materias, promedios, color='mediumpurple')
    plt.xlabel("Materias")
    plt.ylabel("Promedio")
    plt.title("Promedio por Materia")
    plt.xticks(rotation=45, ha="right")
    plt.tight_layout()
    plt.show()

    # Gráfica de medianas
    plt.figure(figsize=(10, 6))
    plt.bar(materias, medianas, color='violet')
    plt.xlabel("Materias")
    plt.ylabel("Mediana")
    plt.title("Mediana por Materia")
    plt.xticks(rotation=45, ha="right")
    plt.tight_layout()
    plt.show()

    # Gráfica de modas
    plt.figure(figsize=(10, 6))
    plt.bar(materias, modas, color='lightpink')
    plt.xlabel("Materias")
    plt.ylabel("Moda")
    plt.title("Moda por Materia")
    plt.xticks(rotation=45, ha="right")
    plt.tight_layout()
    plt.show()

# llamado de comandos
materias = []                                                           #lista de materias vacía
for _ in range(3):                                                      #con el _ se da a entender que no usaremos valor de interacion
    materia = datos_materia()                                           #llama a la función datos_materia
    materias.append(materia)                                            #agrega la lista materia a la lista materias

graficar_promedios_estudiantes(materias)                                #llama a la función graficar promedios para realizar la grafica
estadisticas = obtener_estadisticas_materias(materias)                  #guarda las estadísticas de la función obtener_estadisticas para hacer el grafico

graficar_estadisticas_separadas(estadísticas)                         
  #llama a la función para crear los gráficos de media, mediana y moda


Programa 19:
#Para graficar la función seno

import matplotlib.pyplot as plt                     # Para la creación de gráficas
import numpy as np
a=np.linspace(0,20,50)
b=np.sin(a)
plt.plot(a,b, '--k', linewidth=2)
plt.show()


Programa 20:


#Ejemplo para poder graficar tres barras:

import numpy as np
import matplotlib.pylab as plt

li=[]                                                             # Para almacenar las sublistas de datos originales (como strings)

subli=[]                                                       # Para las sublistas convertidas a enteros

#que li quede con 3 sublistas de 3 datos
try:
for i in range (3):
for i in range(3):
dato=input("Dame tu dato: ")
subli.append(dato)
li.append(subli)
subli=[]
print(li)
tmp=0
for a in range  (3):
for b in range (3):
tmp=int(li[a][b])
print("tmp",tmp,type(tmp))
subtmp.append(tmp)
litmp.append(subtmp)
subtmp=[]
print(litmp)
X=np.arange(4)

plt.bar(X+0.00,ltm[0],color='b',width=0.25)     #Para la configuración de las gráficas 
plt.bar(X+0.25,ltm[1],color='g',width=0.25)
plt.bar(X+0.50,ltm[2],color='r',width=0.25)
plt.xticks(X+0.38,["uno","dos","tres","algo"])
plt.show()
except:
pass


Programa 21:

#Para convertir a entero usar lo siguiente:

dato=input("Dame un numero: ")
print(dato,type(dato))
num=int(dato)                                         # Convierte la cadena 'dato' a un entero (int).
print(num,type(num))                             # Imprime el valor convertido a entero y su nuevo tipo.

Comentarios

Entradas populares de este blog

Unidad 2

Unidad 3