diff --git a/src/adivinar_numero_p1.py b/src/adivinar_numero_sol.py similarity index 81% rename from src/adivinar_numero_p1.py rename to src/adivinar_numero_sol.py index b51c951..41107fc 100644 --- a/src/adivinar_numero_p1.py +++ b/src/adivinar_numero_sol.py @@ -32,9 +32,10 @@ def pausa(): limpiar_pantalla() -def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) -> str: +def evaluar_diferencia(numero: int, numero_oculto: int, frio: int, caliente: int) -> int: """ - Evalúa la distancia entre el número oculto y el ingresado, y devuelve una pista basada en la cercanía. + Evalúa la distancia entre el número oculto y el ingresado, y devuelve un código numérico + basado en la cercanía. Args: numero (int): Número ingresado por el usuario. @@ -43,31 +44,54 @@ def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) caliente (int): Diferencia máxima para considerar la pista como "Caliente". Returns: - str: Mensaje indicando si el número está "Frío", "Caliente" o "Te Quemas". + int: + - 0 si el número está "Frío". + - 1 si el número está "Caliente". + - 2 si el número está "Te Quemas". + + Ejemplos: + >>> evaluar_diferencia(50, 100, 15, 5) + 0 # Frío + + >>> evaluar_diferencia(95, 100, 15, 5) + 1 # Caliente + + >>> evaluar_diferencia(98, 100, 15, 5) + 2 # Te Quemas """ diferencia = abs(numero_oculto - numero) if diferencia > frio: - return "* FRÍO, FRÍO," + return 0 # Frío elif diferencia > caliente: - return "* CALIENTE, CALIENTE," + return 1 # Caliente else: - return "* TE QUEMAS," + return 2 # Te Quemas -def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: +def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): """ - Genera una pista indicando si el número oculto es mayor o menor que el número ingresado. + Muestra una pista combinando la distancia (frío, caliente, te quemas) y si el número oculto + es mayor o menor. Args: numero (int): Número ingresado por el usuario. numero_oculto (int): Número que debe ser adivinado. intentos (int): Cantidad de intentos restantes. - - Returns: - str: Mensaje indicando si el número oculto es mayor o menor, y cuántos intentos quedan. + frio (int): Diferencia máxima para considerar la pista como "Frío". + caliente (int): Diferencia máxima para considerar la pista como "Caliente". """ - pista = "el número oculto es " + diferencia_code = evaluar_diferencia(numero, numero_oculto, frio, caliente) + + # Determinamos el mensaje según el código de diferencia + if diferencia_code == 0: + pista = "* FRÍO, FRÍO," + elif diferencia_code == 1: + pista = "* CALIENTE, CALIENTE," + else: + pista = "* TE QUEMAS," + + pista += " el número oculto es " if numero_oculto > numero: pista += "MAYOR... " @@ -79,23 +103,7 @@ def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: else: pista += f"¡te queda {intentos} intento!\n" - return pista - - -def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): - """ - Muestra una pista combinando la distancia y si el número oculto es mayor o menor. - - Args: - numero (int): Número ingresado por el usuario. - numero_oculto (int): Número que debe ser adivinado. - intentos (int): Cantidad de intentos restantes. - frio (int): Diferencia máxima para considerar la pista como "Frío". - caliente (int): Diferencia máxima para considerar la pista como "Caliente". - """ - pista = generar_pista(numero, numero_oculto, intentos) - estado_calor = evaluar_distancia(numero, numero_oculto, frio, caliente) - print(f"\n{estado_calor} {pista}") + print(f"\n{pista}") def adivina_el_numero(numero_oculto: int, total_intentos: int, frio: int, caliente: int): diff --git a/src/adivinar_numero_p2.py b/src/adivinar_numero_sol_bonus.py similarity index 84% rename from src/adivinar_numero_p2.py rename to src/adivinar_numero_sol_bonus.py index b443d29..876509b 100644 --- a/src/adivinar_numero_p2.py +++ b/src/adivinar_numero_sol_bonus.py @@ -32,9 +32,10 @@ def pausa(): limpiar_pantalla() -def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) -> str: +def evaluar_diferencia(numero: int, numero_oculto: int, frio: int, caliente: int) -> int: """ - Evalúa la distancia entre el número oculto y el ingresado, y devuelve una pista basada en la cercanía. + Evalúa la distancia entre el número oculto y el ingresado, y devuelve un código numérico + basado en la cercanía. Args: numero (int): Número ingresado por el usuario. @@ -43,31 +44,54 @@ def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) caliente (int): Diferencia máxima para considerar la pista como "Caliente". Returns: - str: Mensaje indicando si el número está "Frío", "Caliente" o "Te Quemas". + int: + - 0 si el número está "Frío". + - 1 si el número está "Caliente". + - 2 si el número está "Te Quemas". + + Ejemplos: + >>> evaluar_diferencia(50, 100, 15, 5) + 0 # Frío + + >>> evaluar_diferencia(95, 100, 15, 5) + 1 # Caliente + + >>> evaluar_diferencia(98, 100, 15, 5) + 2 # Te Quemas """ diferencia = abs(numero_oculto - numero) if diferencia > frio: - return "* FRÍO, FRÍO," + return 0 # Frío elif diferencia > caliente: - return "* CALIENTE, CALIENTE," + return 1 # Caliente else: - return "* TE QUEMAS," + return 2 # Te Quemas -def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: +def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): """ - Genera una pista indicando si el número oculto es mayor o menor que el número ingresado. + Muestra una pista combinando la distancia (frío, caliente, te quemas) y si el número oculto + es mayor o menor. Args: numero (int): Número ingresado por el usuario. numero_oculto (int): Número que debe ser adivinado. intentos (int): Cantidad de intentos restantes. - - Returns: - str: Mensaje indicando si el número oculto es mayor o menor, y cuántos intentos quedan. + frio (int): Diferencia máxima para considerar la pista como "Frío". + caliente (int): Diferencia máxima para considerar la pista como "Caliente". """ - pista = "el número oculto es " + diferencia_code = evaluar_diferencia(numero, numero_oculto, frio, caliente) + + # Determinamos el mensaje según el código de diferencia + if diferencia_code == 0: + pista = "* FRÍO, FRÍO," + elif diferencia_code == 1: + pista = "* CALIENTE, CALIENTE," + else: + pista = "* TE QUEMAS," + + pista += " el número oculto es " if numero_oculto > numero: pista += "MAYOR... " @@ -79,23 +103,7 @@ def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: else: pista += f"¡te queda {intentos} intento!\n" - return pista - - -def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): - """ - Muestra una pista combinando la distancia y si el número oculto es mayor o menor. - - Args: - numero (int): Número ingresado por el usuario. - numero_oculto (int): Número que debe ser adivinado. - intentos (int): Cantidad de intentos restantes. - frio (int): Diferencia máxima para considerar la pista como "Frío". - caliente (int): Diferencia máxima para considerar la pista como "Caliente". - """ - pista = generar_pista(numero, numero_oculto, intentos) - estado_calor = evaluar_distancia(numero, numero_oculto, frio, caliente) - print(f"\n{estado_calor} {pista}") + print(f"\n{pista}") def adivina_el_numero(numero_oculto: int, total_intentos: int, frio: int, caliente: int): diff --git a/src/adivinar_numero_v2.py b/src/adivinar_numero_v2.py index e0ee50b..7766a9f 100644 --- a/src/adivinar_numero_v2.py +++ b/src/adivinar_numero_v2.py @@ -17,31 +17,49 @@ def pausa(): limpiar_pantalla() -def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) -> str: - """Evalúa la distancia entre el número oculto y el ingresado y devuelve el estado.""" +def evaluar_diferencia(numero: int, numero_oculto: int, frio: int, caliente: int) -> int: + """ + Evalúa la distancia entre el número oculto y el ingresado, y devuelve un código numérico + basado en la cercanía. + """ diferencia = abs(numero_oculto - numero) if diferencia > frio: - return "* FRÍO, FRÍO," + return 0 # Frío elif diferencia > caliente: - return "* CALIENTE, CALIENTE," + return 1 # Caliente else: - return "* TE QUEMAS," + return 2 # Te Quemas -def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: - """Genera un mensaje de pista indicando si el número oculto es mayor o menor.""" +def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): + """ + Muestra una pista combinando la distancia (frío, caliente, te quemas) y si el número oculto + es mayor o menor. + """ + diferencia_code = evaluar_diferencia(numero, numero_oculto, frio, caliente) + + # Determinamos el mensaje según el código de diferencia + if diferencia_code == 0: + pista = "* FRÍO, FRÍO," + elif diferencia_code == 1: + pista = "* CALIENTE, CALIENTE," + else: + pista = "* TE QUEMAS," + + pista += " el número oculto es " + if numero_oculto > numero: - return f"el número oculto es MAYOR... ¡te quedan {intentos} intentos!\n" + pista += "MAYOR... " else: - return f"el número oculto es MENOR... ¡te quedan {intentos} intentos!\n" + pista += "MENOR... " + if intentos > 1: + pista += f"¡te quedan {intentos} intentos!\n" + else: + pista += f"¡te queda {intentos} intento!\n" -def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): - """Muestra la pista basada en la diferencia entre el número y el número oculto.""" - pista = generar_pista(numero, numero_oculto, intentos) - estado_calor = evaluar_distancia(numero, numero_oculto, frio, caliente) - print(f"\n{estado_calor} {pista}") + print(f"\n{pista}") def adivina_el_numero(numero_oculto: int, total_intentos: int, frio: int, caliente: int): diff --git a/src/adivinar_numero_v3.py b/src/adivinar_numero_v3.py index fcb526c..c64aa58 100644 --- a/src/adivinar_numero_v3.py +++ b/src/adivinar_numero_v3.py @@ -35,9 +35,10 @@ def pausa(): limpiar_pantalla() -def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) -> str: +def evaluar_diferencia(numero: int, numero_oculto: int, frio: int, caliente: int) -> int: """ - Evalúa la distancia entre el número oculto y el ingresado, y devuelve una pista basada en la cercanía. + Evalúa la distancia entre el número oculto y el ingresado, y devuelve un código numérico + basado en la cercanía. Args: numero (int): Número ingresado por el usuario. @@ -46,50 +47,66 @@ def evaluar_distancia(numero: int, numero_oculto: int, frio: int, caliente: int) caliente (int): Diferencia máxima para considerar la pista como "Caliente". Returns: - str: Mensaje indicando si el número está "Frío", "Caliente" o "Te Quemas". + int: + - 0 si el número está "Frío". + - 1 si el número está "Caliente". + - 2 si el número está "Te Quemas". + + Ejemplos: + >>> evaluar_diferencia(50, 100, 15, 5) + 0 # Frío + + >>> evaluar_diferencia(95, 100, 15, 5) + 1 # Caliente + + >>> evaluar_diferencia(98, 100, 15, 5) + 2 # Te Quemas """ diferencia = abs(numero_oculto - numero) if diferencia > frio: - return "* FRÍO, FRÍO," + return 0 # Frío elif diferencia > caliente: - return "* CALIENTE, CALIENTE," + return 1 # Caliente else: - return "* TE QUEMAS," + return 2 # Te Quemas -def generar_pista(numero: int, numero_oculto: int, intentos: int) -> str: +def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): """ - Genera una pista indicando si el número oculto es mayor o menor que el número ingresado. + Muestra una pista combinando la distancia (frío, caliente, te quemas) y si el número oculto + es mayor o menor. Args: numero (int): Número ingresado por el usuario. numero_oculto (int): Número que debe ser adivinado. intentos (int): Cantidad de intentos restantes. - - Returns: - str: Mensaje indicando si el número oculto es mayor o menor, y cuántos intentos quedan. + frio (int): Diferencia máxima para considerar la pista como "Frío". + caliente (int): Diferencia máxima para considerar la pista como "Caliente". """ - if numero_oculto > numero: - return f"el número oculto es MAYOR... ¡te quedan {intentos} intentos!\n" + diferencia_code = evaluar_diferencia(numero, numero_oculto, frio, caliente) + + # Determinamos el mensaje según el código de diferencia + if diferencia_code == 0: + pista = "* FRÍO, FRÍO," + elif diferencia_code == 1: + pista = "* CALIENTE, CALIENTE," else: - return f"el número oculto es MENOR... ¡te quedan {intentos} intentos!\n" + pista = "* TE QUEMAS," + pista += " el número oculto es " -def mostrar_pista(numero: int, numero_oculto: int, intentos: int, frio: int, caliente: int): - """ - Muestra una pista combinando la distancia y si el número oculto es mayor o menor. + if numero_oculto > numero: + pista += "MAYOR... " + else: + pista += "MENOR... " - Args: - numero (int): Número ingresado por el usuario. - numero_oculto (int): Número que debe ser adivinado. - intentos (int): Cantidad de intentos restantes. - frio (int): Diferencia máxima para considerar la pista como "Frío". - caliente (int): Diferencia máxima para considerar la pista como "Caliente". - """ - pista = generar_pista(numero, numero_oculto, intentos) - estado_calor = evaluar_distancia(numero, numero_oculto, frio, caliente) - print(f"\n{estado_calor} {pista}") + if intentos > 1: + pista += f"¡te quedan {intentos} intentos!\n" + else: + pista += f"¡te queda {intentos} intento!\n" + + print(f"\n{pista}") def adivina_el_numero(numero_oculto: int, total_intentos: int, frio: int, caliente: int): diff --git a/tests/test_adivinar_numero_v3.py b/tests/test_adivinar_numero_v3.py index 29e7bf5..b661cdd 100644 --- a/tests/test_adivinar_numero_v3.py +++ b/tests/test_adivinar_numero_v3.py @@ -7,27 +7,13 @@ @pytest.mark.parametrize( "numero, numero_oculto, frio, caliente, expected", [ - (50, 100, 30, 10, "* FRÍO, FRÍO,"), - (85, 100, 30, 10, "* CALIENTE, CALIENTE,"), - (99, 100, 30, 10, "* TE QUEMAS,"), + (50, 100, 30, 10, 0), + (85, 100, 30, 10, 1), + (99, 100, 30, 10, 2), ] ) def test_evaluar_distancia(numero, numero_oculto, frio, caliente, expected): - assert evaluar_distancia(numero, numero_oculto, frio, caliente) == expected - -################################################################################################### - -@pytest.mark.parametrize( - "numero, numero_oculto, intentos, expected", - [ - (50, 100, 5, "el número oculto es MAYOR... ¡te quedan 5 intentos!\n"), - (90, 100, 3, "el número oculto es MAYOR... ¡te quedan 3 intentos!\n"), - (98, 100, 2, "el número oculto es MAYOR... ¡te quedan 2 intentos!\n"), - (150, 100, 1, "el número oculto es MENOR... ¡te quedan 1 intentos!\n") - ] -) -def test_generar_pista(numero, numero_oculto, intentos, expected): - assert generar_pista(numero, numero_oculto, intentos) == expected + assert evaluar_diferencia(numero, numero_oculto, frio, caliente) == expected ################################################################################################### @@ -37,7 +23,7 @@ def test_generar_pista(numero, numero_oculto, intentos, expected): (50, 100, 5, 20, 10, "\n* FRÍO, FRÍO, el número oculto es MAYOR... ¡te quedan 5 intentos!\n\n"), (85, 100, 3, 20, 10, "\n* CALIENTE, CALIENTE, el número oculto es MAYOR... ¡te quedan 3 intentos!\n\n"), (98, 100, 2, 20, 10, "\n* TE QUEMAS, el número oculto es MAYOR... ¡te quedan 2 intentos!\n\n"), - (150, 100, 1, 20, 10, "\n* FRÍO, FRÍO, el número oculto es MENOR... ¡te quedan 1 intentos!\n\n"), + (150, 100, 1, 20, 10, "\n* FRÍO, FRÍO, el número oculto es MENOR... ¡te queda 1 intento!\n\n"), ] ) def test_mostrar_pista(capsys, numero, numero_oculto, intentos, frio, caliente, expected_output):