<jupyter_start><jupyter_text>01 - Caracol y el pozoUn caracol cae en el fondo de un pozo de 125 cm. Cada día el caracol sube 30 cm. pero por la noche, mientras duerme, resbala 20 cm debido a que las paredes son húmedas. ¿Cuantos días tarda en escapar del pozo?TIP: https://www.vix.com/es/btg/curiosidades/59215/acertijos-matematicos-el-caracol-en-el-pozo-facilTIP: http://puzzles.nigelcoldwell.co.uk/sixtytwo.htm  Solución<jupyter_code># Asigna los datos del problema a variables con nombres representativos
# altura del pozo, avance diario, retroceso nocturno, distancia acumulada
# Asigna 0 a la variable que representa la solución
# Escribe el código que soluciona el problema
# Imprime el resultado con print('Dias =', dias)
def t_dias_salir_pozo(avanza,pozo=125,resbala=20):
    """
    Función: dias que tarda el caracol en salir del pozo. 

    Args:
    -----
    avanza: int (cm) avance diario del caracol.
    pozo: int (cm) profundidad del pozo, por defecto 125 cm.
    resbala: int (cm) retroceso del caracol cada noche, por defecto 20 cm.

    Salida:
    -------
    dias: int (dias) dias que tarda el caracol en salir del pozo.
    """
    
    #Comprobamos si el caracol puede salir:
    if (avanza<=resbala):
        dias=-1
        print("El pobre caracol o tiene que dormir menos o no saldrá del pozo :(")
    else:
        dias=0
        recorrido = avanza 
        # Se comprueba si el caracol sale el dia que entró (dia 0)
        if (recorrido>pozo):
            dias=0

        # En caso contrario calculamos los dias que tarda    
        else:
            recorrido=0
            while (recorrido<pozo):
                recorrido=recorrido+(avanza-resbala)
                dias+=1
            
    return dias

avance_cm = [30, 21, 33, 77, 44, 45, 23, 45, 12, 34, 55]
dias=[]

for i in avance_cm:
    resultado=t_dias_salir_pozo(i)
    dias.append(resultado)
    print(f" El caracol tarda {resultado} dias en salir del pozo si avanza {i}cm/dia")
print(dias)<jupyter_output>El caracol tarda 13 dias en salir del pozo si avanza 30cm/dia
 El caracol tarda 125 dias en salir del pozo si avanza 21cm/dia
 El caracol tarda 10 dias en salir del pozo si avanza 33cm/dia
 El caracol tarda 3 dias en salir del pozo si avanza 77cm/dia
 El caracol tarda 6 dias en salir del pozo si avanza 44cm/dia
 El caracol tarda 5 dias en salir del pozo si avanza 45cm/dia
 El caracol tarda 42 dias en salir del pozo si avanza 23cm/dia
 El caracol tarda 5 dias en salir del pozo si avanza 45cm/dia
El pobre caracol o tiene que dormir menos o no saldrá del pozo :(
 El caracol tarda -1 dias en salir del pozo si avanza 12cm/dia
 El caracol tarda 9 dias en salir del pozo si avanza 34cm/dia
 El caracol tarda 4 dias en salir del pozo si avanza 55cm/dia
[13, 125, 10, 3, 6, 5, 42, 5, -1, 9, 4]<jupyter_text>Objetivos1. Tratamiento de variables2. Uso de bucle **while**3. Uso de condicionales **if-else**4. Imprimir por consola  BonusLa distancia recorrida por el caracol viene ahora definida por una lista. ```avance_cm = [30, 21, 33, 77, 44, 45, 23, 45, 12, 34, 55]```¿Cuánto tarda en subir el pozo?¿Cuál es su máximo de desplazamiento en un día? ¿Y su mínimo?¿Cuál es su media de velocidad durante el día?¿Cuál es la desviación típica de su desplazamiento durante el día?<jupyter_code># Asigna los datos del problema a variables con nombres representativos
# altura del pozo, avance diario, retroceso nocturno, distancia acumulada
# Asigna 0 a la variable que representa la solución
# Escribe el código que soluciona el problema
# Imprime el resultado con print('Dias =', dias)

# --------------------------------------------------------------

# ¿Cuál es su máximo de desplazamiento en un día? ¿Y su mínimo?
maximo_desplazamiento=max(avance_cm)
minimo_desplazamiento=min(avance_cm)
print("El máximo desplazamiento es:",maximo_desplazamiento,"y el mínimo:",minimo_desplazamiento)
# ¿Cuál es su media de avance?
media_avance=sum(avance_cm)/len(avance_cm)
print("La media de avance es:",media_avance)

# ¿Cuál es la desviación típica de su desplazamiento durante el día?

# Creamos la función de la desviación:
def desviacion_tipica(lista):
    """
    Esta función calcula la desviación típica de una lista numérica. 

    Args.:
    -----
    lista: list numérica.

    Devuelve:
    ---------
    desviacion: float; resultado del cálculo de la desviación típica de la lista.

    """
    n=len(lista)
    media=sum(lista)/n
    restaelev=[]
    for i in lista:
        restaelev.append((i-media)**2)

    desviacion=sum(restaelev)/n

    return desviacion


# Cálculo:
desviacion_avance=desviacion_tipica(avance_cm)
print("La desviacion típica del avance es:",desviacion_avance)<jupyter_output>El máximo desplazamiento es: 77 y el mínimo: 12
La media de avance es: 38.09090909090909
La desviacion típica del avance es: 294.44628099173553
{'fraction_non_alphanumeric': 0.09198015708970649, 'fraction_numerical': 0.035551880942538236, 'mean_word_length': 3.270962047661077, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 8, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '583803', 'license': 'MIT', 'n_tokens_mistral': 1959, 'n_tokens_neox': 1786, 'n_words': 621, 'path': '01_PREWORK/week03/pra/01-snail-and-well/your-solution-here/caracol.ipynb', 'repo_name': 'mcarlagg17/The_Bridge_DataScience_PT_ALUMNI_feb22', 'size': '4838'}