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