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
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
Publicar un comentario