From ab11df93ebe7468c88d8481f32a32950dd831acf Mon Sep 17 00:00:00 2001 From: dcsibon Date: Fri, 15 Nov 2024 17:21:31 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Pruebas=20f=C3=A1ciles=20con=20listas,=20tu?= =?UTF-8?q?plas,=20conjuntos=20y=20diccionarios.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pruebas/dam1_dic_set.py | 57 +++++++++++++++++++ ...ucturas_datos.py => dam1_listas_tuplas.py} | 0 2 files changed, 57 insertions(+) create mode 100644 pruebas/dam1_dic_set.py rename pruebas/{estructuras_datos.py => dam1_listas_tuplas.py} (100%) diff --git a/pruebas/dam1_dic_set.py b/pruebas/dam1_dic_set.py new file mode 100644 index 0000000..96cb409 --- /dev/null +++ b/pruebas/dam1_dic_set.py @@ -0,0 +1,57 @@ + + + + + +def main(): + mi_lista = ["a", "b", "c"] + mi_tupla = ("x", "y", "z") + mi_conjunto = {"perro", "gato", "loro"} + mi_diccionario = {"clave1": "valor1", "clave2": "valor2"} + + print(", ".join(mi_lista)) # "a, b, c" + print(" | ".join(mi_tupla)) # "x | y | z" + print(" - ".join(mi_conjunto)) # "perro - gato - loro" (orden no garantizado) + print(", ".join(mi_diccionario)) # "clave1, clave2" + print(", ".join(f"{k}:{v}" for k, v in mi_diccionario.items())) # "clave1:valor1, clave2:valor2" + print(" - ".join(mi_diccionario.values())) + + return + + mi_lista = ["uno", 2, "tres"] + resultado = ", ".join(map(str, mi_lista)) + print(resultado) + + a = set(range(1, 11)) + a.update([100, 101, 33, 4]) + print(a) + + a.add(25) + a.add(33) + + for e in a: + print(e, end=" ") + + print() + + while len(a) > 0: + print(a.pop()) + + return + + d = {'uno': 1, 'dos': 2, 'tres': 3} + print(list(d)) + print(list(d.keys())) + print(list(d.values())) + print(list(d.items())) + + d.update([('cuatro', 4), ('cinco', 5)]) + print(list(d.items())) + + + + + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/pruebas/estructuras_datos.py b/pruebas/dam1_listas_tuplas.py similarity index 100% rename from pruebas/estructuras_datos.py rename to pruebas/dam1_listas_tuplas.py From a2f881953f69b304b96c57282c5da26efe7f6aeb Mon Sep 17 00:00:00 2001 From: dcsibon Date: Fri, 15 Nov 2024 17:24:12 +0100 Subject: [PATCH 2/3] id del hash --- pruebas/dam1_dic_set.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pruebas/dam1_dic_set.py b/pruebas/dam1_dic_set.py index 96cb409..2210593 100644 --- a/pruebas/dam1_dic_set.py +++ b/pruebas/dam1_dic_set.py @@ -9,6 +9,10 @@ def main(): mi_conjunto = {"perro", "gato", "loro"} mi_diccionario = {"clave1": "valor1", "clave2": "valor2"} + print(id(mi_conjunto)) + + return + print(", ".join(mi_lista)) # "a, b, c" print(" | ".join(mi_tupla)) # "x | y | z" print(" - ".join(mi_conjunto)) # "perro - gato - loro" (orden no garantizado) From 2f39b5363b9f0db7701733aa939355236a665531 Mon Sep 17 00:00:00 2001 From: dcsibon Date: Fri, 15 Nov 2024 19:42:52 +0100 Subject: [PATCH 3/3] pruebas con dam1 --- otros/calculadora.py | 42 +++++++----- pruebas/estructuras_datos.py | 123 +++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 pruebas/estructuras_datos.py diff --git a/otros/calculadora.py b/otros/calculadora.py index 9b99dde..2409ead 100644 --- a/otros/calculadora.py +++ b/otros/calculadora.py @@ -13,12 +13,12 @@ ) # Operadores soportados por la calculadora -OPERADORES = ('+', '-', 'x', '*', '/', ':', '**', 'exp') +OPERADORES = ('+', '-', 'x', '*', '/', ':', '**', 'exp', '^') OPERADORES_SUMAR = ('+') OPERADORES_RESTAR = ('-') OPERADORES_MULTIPLICAR = ('x', '*') OPERADORES_DIVIDIR = ('/', ':') -OPERADORES_POTENCIA = ('**', 'exp') +OPERADORES_POTENCIA = ('**', 'exp', '^') @@ -49,7 +49,7 @@ def mostrar_error(indice_error: int, msj_error = None): """ try: if msj_error != None: - print(f"\n*ERROR* {MENSAJES_ERROR[indice_error].format(error = msj_error)}\n") + print(f"\n*ERROR* {"Problemas al intentar limpiar la pantalla {}".format(msj_error)}\n") else: print(f"\n*ERROR* {MENSAJES_ERROR[indice_error]}\n") except IndexError: @@ -96,7 +96,15 @@ def es_resultado_negativo(num1: float, num2: float) -> bool: bool: `True` si el resultado debería ser negativo, `False` en caso contrario. Valor por defecto es `False`. """ - return (num1 != 0) and (num2 != 0) and (num1 < 0) != (num2 < 0) + if (num1 < 0 and num2 > 0) or (num2 < 0 and num1 > 0): + resultado = True + else: + resultado = False + + return resultado + + + #return (num1 != 0) and (num2 != 0) and (num1 < 0) != (num2 < 0) def multiplicar(num1: float, num2: float) -> int: @@ -116,7 +124,7 @@ def multiplicar(num1: float, num2: float) -> int: resultado_negativo = es_resultado_negativo(num1, num2) # Redondeo a enteros - num1 = round(abs(num1)) + num1 = int(round(abs(num1), 0)) num2 = round(abs(num2)) # Inicializa el resultado a 0, por si alguno de los números es 0 @@ -128,20 +136,20 @@ def multiplicar(num1: float, num2: float) -> int: num_rango = min(num1, num2) # Calcula el resultado usando solo sumas - for _ in range(num_rango): - resultado += num_a_sumar + # for _ in range(num_rango): + # resultado += num_a_sumar # También podríamos haber utilizado la función sumar: - # for _ in range(num_rango): - # resultado = sumar(resultado, num_a_sumar) + for _ in range(num_rango): + resultado = sumar(resultado, num_a_sumar) # Ajuste de signo si el resultado es negativo - if resultado_negativo: - resultado = 0 - resultado + # if resultado_negativo: + # resultado = 0 - resultado # También podríamos haber utilizado la función restar: - # if resultado_negativo: - # resultado = restar(0, resultado) + if resultado_negativo: + resultado = restar(0, resultado) return resultado @@ -182,9 +190,9 @@ def dividir(num1: float, num2: float) -> int: resultado += 1 # También podríamos haber utilizado la función restar - # while num1 >= num2: - # num1 = restar(num1, num2) - # resultado = sumar(resultado, 1) + while num1 >= num2: + num1 = restar(num1, num2) + resultado = sumar(resultado, 1) # Ajuste de signo si el resultado es negativo if resultado_negativo: @@ -259,7 +267,7 @@ def calcular_operacion(num1: float, num2: float, operador: str) -> float: float: Resultado de la operación. Raises: - ZeroDivisionError: Si el divisor es cero. + ValueError: Si el operador no existe. """ if operador in OPERADORES_MULTIPLICAR: resultado = multiplicar(num1, num2) diff --git a/pruebas/estructuras_datos.py b/pruebas/estructuras_datos.py new file mode 100644 index 0000000..6658d7f --- /dev/null +++ b/pruebas/estructuras_datos.py @@ -0,0 +1,123 @@ +import os +import random + + +def limpiar_pantalla(): + """ + Limpia la consola según el sistema operativo. + """ + os.system('clear' if os.name == 'posix' else 'cls') + + +def pausa(): + """ + Pausa la ejecución del programa hasta que se pulse ENTER. + """ + input("\nPresione ENTER para continuar...") + limpiar_pantalla() + + +def obtener_descripciones(asignaturas: list) -> str: + resultado = "" + for asignatura in asignaturas: + resultado += f"Yo estudio {asignatura}\n" + + return resultado + +def numero_aleatorio() -> int: + return random.randint(0, 100) + +def posicion_aleatoria(min: int, max: int) -> int: + return random.randint(min, max) + +def generar_lista_super_aleatoria() -> list: + mi_lista = list() + + for i in range(10): + pos = posicion_aleatoria(0, len(mi_lista)) + mi_lista.insert(pos, numero_aleatorio()) + + return mi_lista + + +def main(): + + limpiar_pantalla() + + conj = {1, 2} + conj1 = {2, 1} + + print(conj == conj1) + + #print(conj.pop()) + + conj2 = {6,1, 1, 1, 5} + + conj.update(conj2) + + for e in conj: + print(e) + + #conj = set([4, 7, 8, '232']) + + print(conj) + + + + + + return + + mi_diccionario = {'uno': 1, 'dos': 2, 'tres': 3} + + mi_diccionario["cuatro"] = 4 + mi_diccionario["cuatro"] = 44 + + mi_diccionario.update([("cuatro", 40), ("cinco", 5), ("seis", 6)]) + + print(list(mi_diccionario.items())) + + return + + for elemento in mi_diccionario.items(): + print(elemento) + + print(mi_diccionario.items()) + + return + + + + numeros = generar_lista_super_aleatoria() + + print(numeros) + + return + + asignaturas = ("SI", "PR", "BD", "IPE", "ED", "SOS", "DIG", "LM") + + print(obtener_descripciones(asignaturas)) + + return + + + + + limpiar_pantalla() + + print(asignaturas) + pausa() + + for i in range(len(asignaturas)): + print(asignaturas[i], end="") + if i == len(asignaturas) - 1: + print(".") + else: + print(end="-") + + pausa() + + + +if __name__ == "__main__": + main() \ No newline at end of file