diff --git a/PiramideSumas/piramideSumas1.py b/PiramideSumas/piramideSumas1.py index b5d5e28..02d56b0 100644 --- a/PiramideSumas/piramideSumas1.py +++ b/PiramideSumas/piramideSumas1.py @@ -2,7 +2,7 @@ import os -def borrarConsola(): +def borrar_consola(): """ Limpia la consola """ @@ -103,19 +103,18 @@ def pedir_respuesta(msj: str) -> str: def main(): - + borrar_consola() repetir = True - while repetir: - borrarConsola() + while repetir: num = pedir_numero("Introduzca un número: ") + borrar_consola() print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() - - borrarConsola() print("\n\nBye, bye!!\n\n") diff --git a/PiramideSumas/piramideSumas2a.py b/PiramideSumas/piramideSumas2a.py index 5c1be49..f061bc5 100644 --- a/PiramideSumas/piramideSumas2a.py +++ b/PiramideSumas/piramideSumas2a.py @@ -2,7 +2,7 @@ import os -def borrarConsola(): +def borrar_consola(): if os.name == "posix": os.system ("clear") elif os.name == "ce" or os.name == "nt" or os.name == "dos": @@ -64,19 +64,18 @@ def pedir_respuesta(msj: str) -> str: def main(): - + borrar_consola() repetir = True + while repetir: - borrarConsola() - num = pedir_numero("Introduzca un número: ") + borrar_consola() print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() - - borrarConsola() print("\n\nBye, bye!!\n\n") diff --git a/PiramideSumas/piramideSumas2b.py b/PiramideSumas/piramideSumas2b.py index 053675e..fa01ae5 100644 --- a/PiramideSumas/piramideSumas2b.py +++ b/PiramideSumas/piramideSumas2b.py @@ -2,7 +2,7 @@ import os -def borrarConsola(): +def borrar_consola(): """ Limpia la consola """ @@ -103,18 +103,18 @@ def pedir_respuesta(msj: str) -> str: def main(): - + borrar_consola() repetir = True - while repetir: - borrarConsola() + while repetir: num = pedir_numero("Introduzca un número: ") - - print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + borrar_consola() + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() - borrarConsola() print("\n\nBye, bye!!\n\n") diff --git a/PiramideSumas/piramideSumas3a.py b/PiramideSumas/piramideSumas3a.py index 2964b14..655b7a6 100644 --- a/PiramideSumas/piramideSumas3a.py +++ b/PiramideSumas/piramideSumas3a.py @@ -1,8 +1,10 @@ import os +MAXIMO_VALOR = 20 -def borrarConsola(): + +def borrar_consola(): if os.name == "posix": os.system ("clear") elif os.name == "ce" or os.name == "nt" or os.name == "dos": @@ -49,8 +51,8 @@ def pedir_numero(msj: str) -> int: num = int(input(msj).strip()) if num < 0: raise ValueError("El número debe ser positivo") - if num > 100: - raise ValueError("El número debe estar entre el 0 y el 100") + if num > MAXIMO_VALOR: + raise ValueError(f"El número debe estar entre el 0 y el {MAXIMO_VALOR}") except ValueError as e: if num is None: print("*ERROR* No es un número entero. Inténtelo otra vez!") @@ -78,19 +80,18 @@ def pedir_respuesta(msj: str) -> str: def main(): - + borrar_consola() repetir = True - while repetir: - borrarConsola() + while repetir: num = pedir_numero("Introduzca un número: ") + borrar_consola() print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() - - borrarConsola() print("\n\nBye, bye!!\n\n") diff --git a/PiramideSumas/piramideSumas3b.py b/PiramideSumas/piramideSumas3b.py index bf5334f..0242ad7 100644 --- a/PiramideSumas/piramideSumas3b.py +++ b/PiramideSumas/piramideSumas3b.py @@ -1,15 +1,17 @@ import os +MAXIMO_VALOR = 20 -def borrarConsola(): + +def borrar_consola(): if os.name == "posix": os.system ("clear") elif os.name == "ce" or os.name == "nt" or os.name == "dos": os.system ("cls") -def piramideDecreciente(num: int): +def piramide_decreciente(num: int): res = "" while num >= 0: cont = 1 @@ -26,7 +28,7 @@ def piramideDecreciente(num: int): return res -def piramideCreciente(num: int): +def piramide_creciente(num: int): res = "" numFila = 1 while numFila <= num: @@ -43,8 +45,8 @@ def piramideCreciente(num: int): def piramide(num: int): - res = piramideDecreciente(num) - res += piramideCreciente(num) + res = piramide_decreciente(num) + res += piramide_creciente(num) return res @@ -57,8 +59,8 @@ def pedir_numero(msj: str) -> int: num = int(input(msj).strip()) if num < 0: raise ValueError("El número debe ser positivo") - if num > 100: - raise ValueError("El número debe estar entre el 0 y el 100") + if num > MAXIMO_VALOR: + raise ValueError(f"El número debe estar entre el 0 y el {MAXIMO_VALOR}") except ValueError as e: if num is None: print("*ERROR* No es un número entero. Inténtelo otra vez!") @@ -86,19 +88,18 @@ def pedir_respuesta(msj: str) -> str: def main(): - + borrar_consola() repetir = True - while repetir: - borrarConsola() + while repetir: num = pedir_numero("Introduzca un número: ") + borrar_consola() print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() - - borrarConsola() print("\n\nBye, bye!!\n\n") diff --git a/PiramideSumas/piramideSumas3c.py b/PiramideSumas/piramideSumas3c.py new file mode 100644 index 0000000..f92a063 --- /dev/null +++ b/PiramideSumas/piramideSumas3c.py @@ -0,0 +1,245 @@ + +import os + +MAXIMO_VALOR = 20 + + +def borrar_consola(): + """ + Limpia la consola. + """ + if os.name == "posix": + os.system ("clear") + elif os.name == "ce" or os.name == "nt" or os.name == "dos": + os.system ("cls") + + +def generar_fila_creciente_v2(fila_num: int) -> str: + """ + Genera una fila de la pirámide en formato creciente. + + Args: + fila_num (int): Número de la fila actual. + + Returns: + str: La fila de la pirámide en formato creciente. + """ + res = f"{fila_num} => {fila_num} " + total = fila_num + cont = fila_num - 1 + while cont >= 1: + res += f"+ {cont} " + total += cont + cont -= 1 + res += f"+ 0 = {total}\n" + return res + + +def generar_fila_decreciente_v2(fila_num: int) -> str: + """ + Genera una fila de la pirámide en formato decreciente. + + Args: + fila_num (int): Número de la fila actual. + + Returns: + str: La fila de la pirámide en formato decreciente. + """ + res = f"{fila_num} => 0 " + total = 0 + cont = 1 + while cont <= fila_num: + res += f"+ {cont} " + total += cont + cont += 1 + res += f"= {total}\n" if fila_num != 0 else "\n" + return res + + +def generar_fila_creciente(fila_num: int) -> str: + """ + Genera una fila de la pirámide en formato creciente. + + Args: + fila_num (int): Número de la fila actual. + + Returns: + str: La fila de la pirámide en formato creciente. + """ + res = f"{fila_num} => {fila_num} " + total = fila_num + for cont in range(fila_num - 1, 0, -1): + res += f"+ {cont} " + total += cont + res += f"+ 0 = {total}\n" + return res + + +def generar_fila_decreciente(fila_num: int) -> str: + """ + Genera una fila de la pirámide en formato decreciente. + + Args: + fila_num (int): Número de la fila actual. + + Returns: + str: La fila de la pirámide en formato decreciente. + """ + res = f"{fila_num} => 0 " + total = 0 + for cont in range(1, fila_num + 1): + res += f"+ {cont} " + total += cont + res += f"= {total}\n" if fila_num != 0 else "\n" + return res + + +def piramide_creciente(num: int) -> str: + """ + Genera una pirámide en formato creciente hasta un número dado. + + Args: + num (int): Número de filas de la pirámide. + + Returns: + str: La pirámide en formato creciente. + """ + res = "" + for fila_num in range(1, num + 1): + res += generar_fila_creciente(fila_num) + return res + + +def piramide_decreciente(num: int) -> str: + """ + Genera una pirámide en formato decreciente desde un número dado. + + Args: + num (int): Número de filas de la pirámide. + + Returns: + str: La pirámide en formato decreciente. + """ + res = "" + for fila_num in range(num, -1, -1): + res += generar_fila_decreciente(fila_num) + return res + + +def piramide(num: int) -> str: + """ + Genera una pirámide combinando el formato decreciente y creciente. + + Args: + num (int): Número de filas de la pirámide. + + Returns: + str: La pirámide completa. + """ + res = piramide_decreciente(num) + res += piramide_creciente(num) + return res + + +def pedir_numero(msj: str) -> int: + numero_correcto = False + while not numero_correcto: + num = None + + try: + num = int(input(msj).strip()) + if num < 0: + raise ValueError("El número debe ser positivo") + if num > MAXIMO_VALOR: + raise ValueError(f"El número debe estar entre el 0 y el {MAXIMO_VALOR}") + except ValueError as e: + if num is None: + print("*ERROR* No es un número entero. Inténtelo otra vez!") + else: + print(f"*ERROR* {e}. Inténtelo otra vez!") + else: + numero_correcto = True + + return num + + +def pedir_respuesta(msj: str) -> str: + respuesta_correcta = False + while not respuesta_correcta: + try: + respuesta = input(msj).replace(" ", "").upper() + if respuesta == "" or not respuesta in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + borrar_consola() + repetir = True + + while repetir: + num = pedir_numero("Introduzca un número: ") + borrar_consola() + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + borrar_consola() + + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PiramideSumas/preguntas.md b/PiramideSumas/preguntas.md new file mode 100644 index 0000000..9e67d0f --- /dev/null +++ b/PiramideSumas/preguntas.md @@ -0,0 +1,41 @@ +## PREGUNTAS + + 1. Pregunta: ¿Qué método debo utilizar para modificar una frase convirtiendo todas las palabras que contenga en palabras capitalizadas? + + • Repuesta: title. Ejemplo: "esto es una FRASE".title() + + 2. Pregunta: ¿Qué estructura de control utilizas para repetir un bloque de código mientras se cumpla una condición? + + • Respuesta: while + + 3. Pregunta: Estoy en una función. ¿Cómo puedes interrumpir un ciclo for o while antes de que termine? + + • Respuesta: Usando la sentencia break o return si estoy en una función y quiero acabarla. + + 4. Pregunta: ¿Qué función devuelve el número de caracteres en una cadena de texto? + + • Respuesta: len(). Ejemplo: len("cadena") + + 5. Pregunta: Si quieres verificar si una variable x se encuentra dentro de un conjunto de valores [1, 2, 3], ¿qué operador puedes usar? + + • Respuesta: in. Ejemplo: if x in [1, 2, 3]: + + 6. Pregunta: ¿Cómo puedes verificar si una cadena de texto comienza con un carácter específico? + + • Respuesta: startswith(). Ejemplo: "Python".startswith("P") + + 7. Pregunta: ¿Qué sentencia permite ejecutar un bloque de código solo si se cumple una condición específica? + + • Respuesta: if + + 8. Pregunta: ¿Qué resultado obtienes al evaluar not (True and False)? + + • Respuesta: True + + 9. Pregunta: ¿Qué operador lógico te permite verificar que al menos una de varias condiciones sea verdadera? + + • Respuesta: or + + 10. Pregunta: ¿Cómo puedes recorrer cada carácter de una cadena s usando un bucle for? + + • Respuesta: for letra in s: