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..02d56b0 --- /dev/null +++ b/PiramideSumas/piramideSumas1.py @@ -0,0 +1,122 @@ + +import os + + +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 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 == "" 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/piramideSumas2a.py b/PiramideSumas/piramideSumas2a.py new file mode 100644 index 0000000..f061bc5 --- /dev/null +++ b/PiramideSumas/piramideSumas2a.py @@ -0,0 +1,83 @@ + +import os + + +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 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 == "" 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/piramideSumas2b.py b/PiramideSumas/piramideSumas2b.py new file mode 100644 index 0000000..fa01ae5 --- /dev/null +++ b/PiramideSumas/piramideSumas2b.py @@ -0,0 +1,169 @@ + +import os + + +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 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 == "" 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/piramideSumas3a.py b/PiramideSumas/piramideSumas3a.py new file mode 100644 index 0000000..655b7a6 --- /dev/null +++ b/PiramideSumas/piramideSumas3a.py @@ -0,0 +1,146 @@ + +import os + +MAXIMO_VALOR = 20 + + +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 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 > 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/piramideSumas3b.py b/PiramideSumas/piramideSumas3b.py new file mode 100644 index 0000000..0242ad7 --- /dev/null +++ b/PiramideSumas/piramideSumas3b.py @@ -0,0 +1,154 @@ + +import os + +MAXIMO_VALOR = 20 + + +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 piramide_decreciente(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 piramide_creciente(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 = 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/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: 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__":