Skip to content

Commit

Permalink
Merge branch 'main' of github.com:IES-Rafael-Alberti/dam1-2425-ejerci…
Browse files Browse the repository at this point in the history
…cios-u2-dcsibon
  • Loading branch information
dcsibon committed Nov 18, 2024
2 parents 4cdfc9b + 2f39b53 commit 3a28b6e
Show file tree
Hide file tree
Showing 4 changed files with 227 additions and 35 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
61 changes: 61 additions & 0 deletions pruebas/dam1_dic_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@





def main():
mi_lista = ["a", "b", "c"]
mi_tupla = ("x", "y", "z")
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)
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()
53 changes: 53 additions & 0 deletions pruebas/dam1_listas_tuplas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

import os


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 main():
asignaturas = ["Mates", "Lengua", "Inglés", "Física", "Química", "Historia"]

limpiar_pantalla()

print(asignaturas)

pausa()

for asignatura in asignaturas:
print(asignatura)

pausa()

for i in range(len(asignaturas)):
if i < len(asignaturas) - 1:
print(asignaturas[i], end = " - ")
else:
print(asignaturas[i] + ".")

pausa()

pos = 0
frase = ""
while pos < len(asignaturas):
frase += asignaturas[pos] + ", "
pos += 1
print(frase[:-2] + '.')

pausa()


if __name__ == "__main__":
main()
106 changes: 88 additions & 18 deletions pruebas/estructuras_datos.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

import os
import random


def limpiar_pantalla():
Expand All @@ -17,36 +17,106 @@ def pausa():
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():
asignaturas = ["Mates", "Lengua", "Inglés", "Física", "Química", "Historia"]

limpiar_pantalla()

print(asignaturas)
conj = {1, 2}
conj1 = {2, 1}

pausa()
print(conj == conj1)

for asignatura in asignaturas:
print(asignatura)
#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)):
if i < len(asignaturas) - 1:
print(asignaturas[i], end = " - ")
print(asignaturas[i], end="")
if i == len(asignaturas) - 1:
print(".")
else:
print(asignaturas[i] + ".")

print(end="-")
pausa()

pos = 0
frase = ""
while pos < len(asignaturas):
frase += asignaturas[pos] + ", "
pos += 1
print(frase[:-2] + '.')

pausa()


if __name__ == "__main__":
Expand Down

0 comments on commit 3a28b6e

Please sign in to comment.