Skip to content

Commit

Permalink
pruebas con dam1
Browse files Browse the repository at this point in the history
  • Loading branch information
dcsibon committed Nov 15, 2024
1 parent a2f8819 commit 2f39b53
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 17 deletions.
42 changes: 25 additions & 17 deletions otros/calculadora.py
Original file line number Diff line number Diff line change
Expand Up @@ -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', '^')



Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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)
Expand Down
123 changes: 123 additions & 0 deletions pruebas/estructuras_datos.py
Original file line number Diff line number Diff line change
@@ -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()

0 comments on commit 2f39b53

Please sign in to comment.