From b48b0e9e861721c8b363b60b3d2b8613afcff7e6 Mon Sep 17 00:00:00 2001 From: dcsibon Date: Thu, 24 Oct 2024 19:05:02 +0200 Subject: [PATCH 1/4] pruebas --- src/Pract2_3/burbuja.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Pract2_3/burbuja.py b/src/Pract2_3/burbuja.py index 95f1cae..89eba02 100644 --- a/src/Pract2_3/burbuja.py +++ b/src/Pract2_3/burbuja.py @@ -19,6 +19,8 @@ def main(): """ mapa = [["0" for _ in range(5)] for i in range(5)] + print(1) + saludo = "hola" if __name__ == "__main__": From 43772216967fb34b7288d22e1392b99601ed3a48 Mon Sep 17 00:00:00 2001 From: dcsibon Date: Thu, 24 Oct 2024 19:10:30 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Pir=C3=A1mides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PiramideSumas/__init__.py | 0 PiramideSumas/piramideSumas1.py | 123 ++++++++++++++++++++++ PiramideSumas/piramideSumas2a.py | 84 +++++++++++++++ PiramideSumas/piramideSumas2b.py | 169 +++++++++++++++++++++++++++++++ PiramideSumas/piramideSumas3a.py | 145 ++++++++++++++++++++++++++ PiramideSumas/piramideSumas3b.py | 153 ++++++++++++++++++++++++++++ 6 files changed, 674 insertions(+) create mode 100644 PiramideSumas/__init__.py create mode 100644 PiramideSumas/piramideSumas1.py create mode 100644 PiramideSumas/piramideSumas2a.py create mode 100644 PiramideSumas/piramideSumas2b.py create mode 100644 PiramideSumas/piramideSumas3a.py create mode 100644 PiramideSumas/piramideSumas3b.py diff --git a/PiramideSumas/__init__.py b/PiramideSumas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/PiramideSumas/piramideSumas1.py b/PiramideSumas/piramideSumas1.py new file mode 100644 index 0000000..072d39e --- /dev/null +++ b/PiramideSumas/piramideSumas1.py @@ -0,0 +1,123 @@ + +import os + + +def borrarConsola(): + """ + 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 generarFila(num, res): + """ + Crea una fila de la pirámide de sumas + + Parámetros + ---------- + int + un número por el que empezar la serie de la fila + str + la cadena de caracteres que acumulará todas las filas de la pirámide + + Retorna + ------- + str + la cadena de caracteres de la pirámide con la fila acumulada como otra línea + """ + total = 0 + res += str(num) + " => " + str(num) + " " + + for i in range(num - 1, -1, -1): + res += f"+ {i} " + total += i + + if num != 0: + res += f"= {total}" + res += "\n" + + return res + + +def piramide(num: int): + """ + Crea una pirámide de sumas de un número + + Parámetros + ---------- + int + un número, que será el valor máximo de la pirámide de sumas + + Retorna + ------- + str + la cadena de caracteres con la pirámide de sumas + """ + res = "" + + while num >= 0: + res = generarFila(num, res) + num -= 1 + + 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 > 100: + raise ValueError("El número debe estar entre el 0 y el 100") + 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 not in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + + repetir = True + while repetir: + borrarConsola() + + num = pedir_numero("Introduzca un número: ") + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + + + borrarConsola() + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() diff --git a/PiramideSumas/piramideSumas2a.py b/PiramideSumas/piramideSumas2a.py new file mode 100644 index 0000000..24c4456 --- /dev/null +++ b/PiramideSumas/piramideSumas2a.py @@ -0,0 +1,84 @@ + +import os + + +def borrarConsola(): + if os.name == "posix": + os.system ("clear") + elif os.name == "ce" or os.name == "nt" or os.name == "dos": + os.system ("cls") + + +def piramide(num: int): + res = "" + while num >= 0: + cont = 1 + total = 0 + res += str(num) + " => 0 " + while cont <= num: + res += f"+ {cont} " + total += cont + cont += 1 + if num != 0: + res += f"= {total}" + res += "\n" + num -= 1 + 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 > 100: + raise ValueError("El número debe estar entre el 0 y el 100") + 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 not in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + + repetir = True + while repetir: + borrarConsola() + + num = pedir_numero("Introduzca un número: ") + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + + + borrarConsola() + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() diff --git a/PiramideSumas/piramideSumas2b.py b/PiramideSumas/piramideSumas2b.py new file mode 100644 index 0000000..fa7f74d --- /dev/null +++ b/PiramideSumas/piramideSumas2b.py @@ -0,0 +1,169 @@ + +import os + + +def borrarConsola(): + """ + 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 generarFila(num, res): + """ + Crea una fila de la pirámide de sumas + + Parámetros + ---------- + int + un número por el que empezar la serie de la fila + str + la cadena de caracteres que acumulará todas las filas de la pirámide + + Retorna + ------- + str + la cadena de caracteres de la pirámide con la fila acumulada como otra línea + """ + total = 0 + res += str(num) + " => 0 " + + for i in range(1, num + 1): + res += f"+ {i} " + total += i + + if num != 0: + res += f"= {total}" + res += "\n" + + return res + + +def piramide(num: int): + """ + Crea una pirámide de sumas de un número + + Parámetros + ---------- + int + un número, que será el valor máximo de la pirámide de sumas + + Retorna + ------- + str + la cadena de caracteres con la pirámide de sumas + """ + res = "" + + while num >= 0: + res = generarFila(num, res) + num -= 1 + + 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 > 100: + raise ValueError("El número debe estar entre el 0 y el 100") + 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 not in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + + repetir = True + while repetir: + borrarConsola() + + num = pedir_numero("Introduzca un número: ") + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + + borrarConsola() + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PiramideSumas/piramideSumas3a.py b/PiramideSumas/piramideSumas3a.py new file mode 100644 index 0000000..af4ab44 --- /dev/null +++ b/PiramideSumas/piramideSumas3a.py @@ -0,0 +1,145 @@ + +import os + + +def borrarConsola(): + if os.name == "posix": + os.system ("clear") + elif os.name == "ce" or os.name == "nt" or os.name == "dos": + os.system ("cls") + + +def piramide(num: int): + numOrig = num + res = "" + while num >= 0: + cont = 1 + total = 0 + res += str(num) + " => 0 " + while cont <= num: + res += f"+ {cont} " + total += cont + cont += 1 + if num != 0: + res += f"= {total}" + res += "\n" + num -= 1 + + num = 1 + while num <= numOrig: + cont = num + total = num + res += str(num) + f" => {num} " + while cont > 1: + cont -= 1 + res += f"+ {cont} " + total += cont + res += f"+ 0 = {total}\n" + num += 1 + + 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 > 100: + raise ValueError("El número debe estar entre el 0 y el 100") + 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 not in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + + repetir = True + while repetir: + borrarConsola() + + num = pedir_numero("Introduzca un número: ") + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + + + borrarConsola() + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PiramideSumas/piramideSumas3b.py b/PiramideSumas/piramideSumas3b.py new file mode 100644 index 0000000..4a1784f --- /dev/null +++ b/PiramideSumas/piramideSumas3b.py @@ -0,0 +1,153 @@ + +import os + + +def borrarConsola(): + 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): + res = "" + while num >= 0: + cont = 1 + total = 0 + res += str(num) + " => 0 " + while cont <= num: + res += f"+ {cont} " + total += cont + cont += 1 + if num != 0: + res += f"= {total}" + res += "\n" + num -= 1 + return res + + +def piramideCreciente(num: int): + res = "" + numFila = 1 + while numFila <= num: + cont = numFila + total = numFila + res += str(numFila) + f" => {numFila} " + while cont > 1: + cont -= 1 + res += f"+ {cont} " + total += cont + res += f"+ 0 = {total}\n" + numFila += 1 + return res + + +def piramide(num: int): + res = piramideDecreciente(num) + res += piramideCreciente(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 > 100: + raise ValueError("El número debe estar entre el 0 y el 100") + 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 not in "SN": + raise ValueError("Respuesta incorrecta") + except ValueError as e: + print(f"*ERROR* {e}") + else: + respuesta_correcta = True + + return respuesta == "S" + + +def main(): + + repetir = True + while repetir: + borrarConsola() + + num = pedir_numero("Introduzca un número: ") + + print("\nSu pirámide de sumas es la siguiente:\n\n" + piramide(num)) + + repetir = pedir_respuesta("¿Quiere hacer otra pirámide? (s/n) ") + + + borrarConsola() + print("\n\nBye, bye!!\n\n") + + +if __name__ == "__main__": + main() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b17363d9b2b6b1edbac3af08a6085fb3f386a268 Mon Sep 17 00:00:00 2001 From: dcsibon Date: Thu, 24 Oct 2024 19:38:13 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Correcci=C3=B3n=20de=20error=20en=20pedir?= =?UTF-8?q?=5Frespuesta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PiramideSumas/piramideSumas1.py | 2 +- PiramideSumas/piramideSumas2a.py | 2 +- PiramideSumas/piramideSumas2b.py | 2 +- PiramideSumas/piramideSumas3a.py | 2 +- PiramideSumas/piramideSumas3b.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PiramideSumas/piramideSumas1.py b/PiramideSumas/piramideSumas1.py index 072d39e..b5d5e28 100644 --- a/PiramideSumas/piramideSumas1.py +++ b/PiramideSumas/piramideSumas1.py @@ -92,7 +92,7 @@ def pedir_respuesta(msj: str) -> str: while not respuesta_correcta: try: respuesta = input(msj).replace(" ", "").upper() - if respuesta not in "SN": + if respuesta == "" or not respuesta in "SN": raise ValueError("Respuesta incorrecta") except ValueError as e: print(f"*ERROR* {e}") diff --git a/PiramideSumas/piramideSumas2a.py b/PiramideSumas/piramideSumas2a.py index 24c4456..5c1be49 100644 --- a/PiramideSumas/piramideSumas2a.py +++ b/PiramideSumas/piramideSumas2a.py @@ -53,7 +53,7 @@ def pedir_respuesta(msj: str) -> str: while not respuesta_correcta: try: respuesta = input(msj).replace(" ", "").upper() - if respuesta not in "SN": + if respuesta == "" or not respuesta in "SN": raise ValueError("Respuesta incorrecta") except ValueError as e: print(f"*ERROR* {e}") diff --git a/PiramideSumas/piramideSumas2b.py b/PiramideSumas/piramideSumas2b.py index fa7f74d..053675e 100644 --- a/PiramideSumas/piramideSumas2b.py +++ b/PiramideSumas/piramideSumas2b.py @@ -92,7 +92,7 @@ def pedir_respuesta(msj: str) -> str: while not respuesta_correcta: try: respuesta = input(msj).replace(" ", "").upper() - if respuesta not in "SN": + if respuesta == "" or not respuesta in "SN": raise ValueError("Respuesta incorrecta") except ValueError as e: print(f"*ERROR* {e}") diff --git a/PiramideSumas/piramideSumas3a.py b/PiramideSumas/piramideSumas3a.py index af4ab44..2964b14 100644 --- a/PiramideSumas/piramideSumas3a.py +++ b/PiramideSumas/piramideSumas3a.py @@ -67,7 +67,7 @@ def pedir_respuesta(msj: str) -> str: while not respuesta_correcta: try: respuesta = input(msj).replace(" ", "").upper() - if respuesta not in "SN": + if respuesta == "" or not respuesta in "SN": raise ValueError("Respuesta incorrecta") except ValueError as e: print(f"*ERROR* {e}") diff --git a/PiramideSumas/piramideSumas3b.py b/PiramideSumas/piramideSumas3b.py index 4a1784f..bf5334f 100644 --- a/PiramideSumas/piramideSumas3b.py +++ b/PiramideSumas/piramideSumas3b.py @@ -75,7 +75,7 @@ def pedir_respuesta(msj: str) -> str: while not respuesta_correcta: try: respuesta = input(msj).replace(" ", "").upper() - if respuesta not in "SN": + if respuesta == "" or not respuesta in "SN": raise ValueError("Respuesta incorrecta") except ValueError as e: print(f"*ERROR* {e}") From c06a2d63a864cf0de20c491d8da120b1b368505c Mon Sep 17 00:00:00 2001 From: dcsibon Date: Fri, 25 Oct 2024 16:37:00 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Mejoras=20y=20terminar=20c=C3=B3digo=20refa?= =?UTF-8?q?ctorizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PiramideSumas/piramideSumas1.py | 11 +- PiramideSumas/piramideSumas2a.py | 11 +- PiramideSumas/piramideSumas2b.py | 14 +- PiramideSumas/piramideSumas3a.py | 17 ++- PiramideSumas/piramideSumas3b.py | 25 ++-- PiramideSumas/piramideSumas3c.py | 245 +++++++++++++++++++++++++++++++ PiramideSumas/preguntas.md | 41 ++++++ 7 files changed, 325 insertions(+), 39 deletions(-) create mode 100644 PiramideSumas/piramideSumas3c.py create mode 100644 PiramideSumas/preguntas.md 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: