""
Mostrando las entradas con la etiqueta ejercicio. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ejercicio. Mostrar todas las entradas

viernes, 27 de marzo de 2026

Ejercicio de Mississippi

Escenario Mississippi

¿Sabes lo que es Mississippi? Bueno, es el nombre de uno de los estados y ríos en los Estados Unidos. El río Mississippi tiene aproximadamente 2,340 millas de largo, lo que lo convierte en el segundo río más largo de los Estados Unidos (el más largo es el río Missouri). ¡Es tan largo que una sola gota de agua necesita 90 días para recorrer toda su longitud!

La palabra Mississippi también se usa para un propósito ligeramente diferente: para contar mississippily (mississippimente).

Si no estás familiarizado con la frase, estamos aquí para explicarte lo que significa: se utiliza para contar segundos.

La idea detrás de esto es que agregar la palabra Mississippi a un número al contar los segundos en voz alta hace que suene más cercano al reloj, y por lo tanto "un Mississippi, dos Mississippi, tres Mississippi" tomará aproximadamente unos tres segundos reales de tiempo. A menudo lo usan los niños que juegan al escondite para asegurarse de que el buscador haga un conteo honesto.

Tu tarea es muy simple aquí: escribe un programa que use un bucle for para "contar de forma mississippi" hasta cinco. Habiendo contado hasta cinco, el programa debería imprimir en la pantalla el mensaje final "¡Listos o no, ahí voy!"

Utiliza el esqueleto que hemos proporcionado en el editor.

  INFO EXTRA  

Ten en cuenta que el código en el editor contiene dos elementos que pueden no ser del todo claros en este momento: la sentencia import time y el método sleep(). Vamos a hablar de ellos pronto.

Por el momento, nos gustaría que supieras que hemos importado el módulo time y hemos utilizado el método sleep() para suspender la ejecución de cada función posterior de print() dentro del bucle for durante un segundo, de modo que el mensaje enviado a la consola se parezca a un conteo real. No te preocupes - pronto aprenderás más sobre módulos y métodos.


>>import time

>># Escribe un bucle for que cuente hasta cinco.

>>for i in range(1,6,1):

   >> # Cuerpo del bucle: imprime el número de iteración del bucle y la palabra "Mississippi".

    >>print(i, " Mississippi" )

    >># Cuerpo del bucle, emplea : time.sleep(1)

    >>time.sleep(1)

>># Escribe una función print con el mensaje final.

print("Lista o no, aqui vengo!")


domingo, 22 de marzo de 2026

Bucle While. Adivina el numero secreto del mago

 Escenario

Un mago junior ha elegido un número secreto. Lo ha escondido en una variable llamada secret_number. Quiere que todos los que ejecutan su programa jueguen el juego Adivina el número secreto, y adivina qué número ha elegido para ellos. ¡Quiénes no adivinen el número quedarán atrapados en un bucle sin fin para siempre! Desafortunadamente, él no sabe cómo completar el código.

Tu tarea es ayudar al mago a completar el código en el editor de tal manera que el código:

  • pedirá al usuario que ingrese un número entero;
  • utilizará un bucle while;
  • comprobará si el número ingresado por el usuario es el mismo que el número escogido por el mago. 
  • Si el número elegido por el usuario es diferente al número secreto del mago, el usuario debería ver el mensaje "¡Ja, ja! ¡Estás atrapado en mi bucle!" y se le solicitará que ingrese un número nuevamente. 
  • Si el número ingresado por el usuario coincide con el número escogido por el mago, el número debe imprimirse en la pantalla, y el mago debe decir las siguientes palabras: "¡Bien hecho, muggle! Eres libre ahora."

¡El mago está contando contigo! No lo decepciones.


 INFO EXTRA  

Por cierto, observa la función print(). La forma en que lo hemos utilizado aquí se llama impresión multilínea. Puedes utilizar comillas triples para imprimir cadenas en varias líneas para facilitar la lectura del texto o crear un diseño especial basado en texto. Experimenta con ello.

SOLUCION:

>>secret_number = 777

>>print(

>>"""

+================================+

| ¡Bienvenido a mi juego, muggle!|

| Introduce un número entero     |

| y adivina qué número he        |

| elegido para ti.               |

|¿Cuál es el número secreto?     |

+================================+

>>""")

>>number = int(input('por favor ingrese un numero entero: '))

>>while number != secret_number:

  >>print("¡Ja, ja! ¡Estás atrapado en mi bucle!")

  >>number = int(input('por favor ingrese un numero entero: '))

>>print( 'El numero ingresado es: '+ str(number) + " ¡Bien hecho, muggle! Eres libre ahora.")

>>>

secret_number = 777


print(

"""

+================================+

| ¡Bienvenido a mi juego, muggle!|

| Introduce un número entero     |

| y adivina qué número he        |

| elegido para ti.               |

|¿Cuál es el número secreto?     |

+================================+

""")

number = int(input('por favor ingrese un numero entero: '))

while number != secret_number:

  print("¡Ja, ja! ¡Estás atrapado en mi bucle!")

  number = int(input('por favor ingrese un numero entero: '))

print( 'El numero ingresado es: '+ str(number) + " ¡Bien hecho, muggle! Eres libre ahora.")


domingo, 16 de noviembre de 2025

Ejercicio basico de confiabilidad aplicando Weibull, explicado paso a paso

 

¡Claro! Con gusto te explico paso a paso este bloque de código de Análisis de Weibull utilizando la librería reliability de Python. Este código es un excelente ejemplo de cómo simular, ajustar y visualizar un modelo de confiabilidad.


🔍 Explicación Paso a Paso del Código Weibull

El objetivo de este script es simular un conjunto de datos de tiempo hasta la falla, ajustar un modelo de Weibull de 2 parámetros a esos datos, y luego comparar el modelo ajustado con la distribución original.

Paso 1: Importación de Librerías (Líneas 1-3)

Python
from reliability.Distributions import Weibull_Distribution
from reliability.Fitters import Fit_Weibull_2P
from reliability.Probability_plotting import plot_points
import matplotlib.pyplot as plt
  • from reliability.Distributions import Weibull_Distribution: Importa la clase para crear una distribución de Weibull con parámetros conocidos (usada para simular el mundo real).

  • from reliability.Fitters import Fit_Weibull_2P: Importa la función clave que toma datos de fallas y automáticamente encuentra los mejores parámetros de Weibull de 2 parámetros ($\eta$ (escala) y $\beta$ (forma)).

  • from reliability.Probability_plotting import plot_points: Importa una función especializada para trazar los puntos de la data real sobre un gráfico de confiabilidad.

  • import matplotlib.pyplot as plt: Importa la librería estándar de Python para crear y personalizar gráficos.

Paso 2: Creación y Simulación de Datos (Líneas 4-5)

Python
dist = Weibull_Distribution(alpha=30, beta=2)  # creates the distribution object
data = dist.random_samples(20, seed=42)  # draws 20 samples from the distribution. Seeded for repeatability
  • dist = Weibull_Distribution(alpha=30, beta=2):

    • Crea un objeto de distribución teórica de Weibull.

    • alpha ($\eta$) = 30 (Parámetro de Escala o Vida Característica).

    • beta ($\beta$) = 2 (Parámetro de Forma).

  • data = dist.random_samples(20, seed=42):

    • Genera 20 muestras de fallas aleatorias a partir de la distribución teórica (dist). Este es el conjunto de datos simulado que un ingeniero obtendría en un ensayo de vida.

    • seed=42 asegura que si ejecutas el código de nuevo, obtendrás exactamente las mismas 20 muestras, garantizando la repetibilidad del experimento.

Paso 3: Ajuste del Modelo y Gráfico de Probabilidad (Líneas 6-7)

Python
plt.subplot(121)
fit = Fit_Weibull_2P(failures=data)  # fits a Weibull distribution to the data and generates the probability plot
  • plt.subplot(121): Indica a Matplotlib que el siguiente gráfico debe colocarse en una cuadrícula de 1 fila, 2 columnas, en la posición 1 (el gráfico de la izquierda).

  • fit = Fit_Weibull_2P(failures=data):

    • Esta es la función de análisis central. Toma los datos de fallas (data).

    • Ajusta (encuentra) los mejores parámetros $\eta$ y $\beta$ para la distribución de Weibull que mejor se adapte a estos 20 puntos de datos.

    • Automáticamente genera y muestra el Gráfico de Probabilidad de Weibull en el subplot(121). Este gráfico convierte la data a escala log-log para ver si se ajusta a una línea recta (validando el modelo).

    • El resultado del ajuste (los parámetros, el error estándar, las bandas de confianza) se almacena en el objeto fit.

Paso 4: Trazado de Funciones de Supervivencia (Líneas 8-11)

Esta sección se enfoca en el segundo gráfico, que compara la función de supervivencia (SF, Survival Function).

Python
plt.subplot(122)
fit.distribution.SF(label='fitted distribution')
dist.SF(label='original distribution', linestyle='--')
plot_points(failures=data, func='SF')
  • plt.subplot(122): Indica que el siguiente gráfico debe ir en la posición 2 (el gráfico de la derecha).

  • fit.distribution.SF(label='fitted distribution'):

    • Accede al objeto de distribución que se ajustó a los datos (almacenado dentro de fit).

    • Traza su Función de Supervivencia (la probabilidad de que el componente sobreviva hasta el tiempo $t$).

  • dist.SF(label='original distribution', linestyle='--'):

    • Traza la Función de Supervivencia de la distribución original/teórica (la que usamos para crear los datos en el Paso 2), generalmente como una línea punteada para contrastar.

  • plot_points(failures=data, func='SF'):

    • Superpone los puntos de datos reales (data) en el gráfico de SF. Si el ajuste es bueno, estos puntos deben caer cerca de la línea ajustada.

Paso 5: Visualización Final (Líneas 12-13)

Python
plt.legend()
plt.show()
  • plt.legend(): Muestra la leyenda de las etiquetas para distinguir entre la distribución ajustada y la original.

  • plt.show(): Muestra ambos gráficos generados (el de probabilidad y el de supervivencia).

     

     _imagenes/quickstart3.png

     

     


📊 Interpretación de Resultados

La sección de resultados que proporcionaste es el resumen impreso por la función Fit_Weibull_2P:

Parameter  Point Estimate  Standard Error  Lower CI  Upper CI
  Alpha         28.1696         3.57032   21.9733   36.1131
  Beta         1.86309         0.32449   1.32428   2.62111
  • Original (Teórico): $\eta=30$, $\beta=2$.

  • Estimado (Ajustado):

    • Alpha ($\eta$) = 28.1696: La vida característica del componente es de aproximadamente 28.17 unidades de tiempo (muy cerca de la $\eta$ teórica de 30).

    • Beta ($\beta$) = 1.86309: El parámetro de forma (tasa de falla creciente) es 1.86, también muy cercano al valor teórico de 2.

El resultado muestra que el modelo de Máxima Verosimilitud (MLE) de Python ha hecho un excelente trabajo al estimar los parámetros verdaderos a partir de solo 20 puntos de datos, confirmando que la librería reliability es muy efectiva para este tipo de análisis.

jueves, 6 de febrero de 2025

Curso Virtual de Python UniAndes / Reto 4. Materias favoritas

 

Reto 4: Materias favoritas

Pedro es un estudiante inteligente pero desinteresado por algunas de sus materias. A Pedro le gustan las clases en las que aprende programación, matemática, filosofía y literatura. Por lo anterior, cualquier materia que lleve en su título alguna de estas palabras, será de su agrado.

Pedro está planeando su horario, pero ha puesto a su asistente digital a que le dé posibles conjuntos de tres materias para inscribir en su semestre. Él quiere saber, dados los títulos de las tres materias, cuántas de estas son de su agrado. Se sabe que los nombres de las materias irán sin acentos y en minúsculas cuando sean recibidos por parámetro en la función.

Su solución debe tener una función de acuerdo con la siguiente especificación:

  • Nombre de la función: conteo_de_materias

Si lo requiere, puede agregar funciones adicionales.

Descripción de parámetros:

Nombre

Tipo

Descripción

nombre_materia_1

str

El nombre de la primera materia.

nombre_materia_2

str

El nombre de la segunda materia.

nombre_materia_3

str

El nombre de la tercera materia.

Descripción del retorno:

Tipo

Descripción

int

Retorna el número de materias que cumplen los criterios para gustarle a Pedro.

 

miércoles, 22 de mayo de 2024

Ejercicio POO Python

 

Ejercicio 1. Fuente: https://lathack.com/ejercicios-en-python-poo/

Realizar un programa que conste de una clase llamada Estudiante, que tenga como
atributos el nombre y la nota del alumno. Definir los métodos para inicializar 
sus atributos, imprimirlos y mostrar un mensaje con el resultado de la nota y 
si ha aprobado o no.
 
class Estudiante():
    def __init__(self,nombre: str,nota:float):
        self.nombre = nombre
        self.nota = nota

    def imprimir(self):
        print('El nombre del estudiante es: ',self.nombre)
        print('La nota del estudiante es: ',self.nota)

    def resultado(self):
        if self.nota >= 3.0:
            print("El estudiante ha aprobado el curso")
        else:
            print("El estudiante no ha aprobado el curso")
 
student1 = Estudiante('Carlos',4.0)
student2 = Estudiante('Michael',2.9)
student3 = Estudiante('Mariana',4.2)
 
id(student1)
>> 2597350131184
 
id(student2)
>> 2597350143472
 
student1.imprimir()
 
student1.resultado()
 
 
 
 
  
  

lunes, 9 de octubre de 2023

Python basico. Ej 2.8-2. Libro Logica de programacion. Efrain Oviedo

 2. Describa los pasos necesarios para llevar una amiga a cine.

INICIO

   1. Comunicar la invitación a la amiga.

        SI (INVITACION = = ACEPTADA):

            Seleccionar de manera conjunta una película para ver y la sala de cine en la que la proyectan

         SINO:

              Dejar la invitación para otra ocasión (saltar al FIN)

    2. Definir el medio de transporte a utilizar para llevar la amiga a cine

    2.1 Transporte publico (Bus, taxi, Uber, Metro, rutas de buses integradas al metro, etc)

    2.2  Transporte privado (automóvil, motocicleta)

    3. Recoger a la amiga en su casa con la suficiente anticipación para llegar al cine a tiempo.

    4. Llevar a la amiga desde su casa hasta el cine en la opción de transporte seleccionada

    5. Comprar las boletas para ver la película.

    5.1 comprar las boletas en la tienda online en el sitio web de la compañía que administra el cine

    5.2 Comprar las boletas en la taquilla de la sala de cine (esto implica hacer fila).

    6. Comprar snacks en la tienda de la sala para consumir durante la película (esto implica hacer fila).

   7. Ingresar a la sala respectiva 10 minutos antes de la hora de inicio de la película. 

FIN

  

domingo, 30 de julio de 2023

TUTORIAL PARA MANIPULACION DE ARCHIVOS PDF

 

  
# instalando modulo en el entorno de Google colab
 
!pip install pypdf 
from pypdf import PdfReader # Importando lector pdf desde el modulo
from pathlib import Path
# importando lector de ruta de ubicación del archivo 
 
# Leer archivo pdf ubicado en Google Drive
pdf_reader=PdfReader('/content/drive/MyDrive/Colab Notebooks/Convert Pdf/Libro1.pdf')
len(pdf_reader.pages) # Determinando la cantidad de paginas que contiene el pdf 
 
>>>>
2

first_page = pdf_reader.pages[0] # Determinar el tipo de objeto de la primera
pagina
type(first_page) # class 'pypdf._page.PageObject'> 
 
>>>>
pypdf._page.PageObject
 
print(first_page.extract_text()) # extrayendo el texto de la primera pagina del pdf
 
>>>>


 
 
 
 


Entradas recientes

Sabes que es SfePy y para que sirve?

 Fuente: SfePy.org SfePy: elementos finitos simples en Python ¶ SfePy es un software para resolver sistemas de diferencial parcial acoplado ...

Entradas Populares