¡Te damos la bienvenida a este reto!

1

Empezando con Python desde 0

Día 1

2

Variables, funciones y sintaxis básica

3

Tipos de datos: Numbers, Strings y Diccionarios

4

Playground - Retorna el tipo

Día 2

5

Operadores

6

Playground - Calcula la propina

Día 3

7

Condicionales

8

Playground - Averigua si un año es bisiesto

9

Ciclos

10

Playground - Dibuja un triangulo usando bucles

Día 4

11

Listas

12

Encuentra a los gatitos más famosos

13

Diccionarios

14

Obtén el promedio de los estudiantes

15

Tuplas

16

Obten la información de los paquetes

Día 5

17

Calcula la cantidad de letras en una oración

18

Encuentra el mayor palíndromo

Día 6

19

Sets

20

Encuentre la intersección de conjuntos

Día 7

21

List comprehension

22

Encuentra palabras con dos vocales

23

Dictionary Comprehension

24

Calcula la longitud de las palabras

Día 8

25

Funciones Lambda

26

Filtra mensajes de un user específico

27

Higher order functions

28

Crea tu propio método map

Día 9

29

Manejo de Errores y excepciones

30

Maneja correctamente los errores

31

Maneja las excepciones

Día 10

32

Playground - Crea un task manager usando closures

Día 11

33

Lectura de archivos de texto y CSV

Día 12

34

Programación orientada a objetos

35

Crea un auto usando clases

Día 13

36

Abstracción en Python

37

Playground - Crea un sistema de carrito de compras

38

Encapsulamiento en Python

39

Playground - Encapsula datos de los usuarios

Día 14

40

Herencia en Python

41

Playground - Jerarquía de animales usando herencia

Día 15

42

Polimorfismo en Python

43

Playground - Implementa un sistema de pagos

Día 16

44

Estructuras de datos en Python

45

Playground - Crea tu propia lista en python

46

Hash tables en Python

47

Playground - Implementación de una HashTable para Contactos

Día 17

48

Maps en Python

49

Playground - Crea un task manager con Maps

Día 18

50

Singly Linked List en Python

51

Playground - Implementación de una singly linked list

Día 19

52

Stacks en Python

53

Playground - Implementación de un stack

Día 20

54

Queues en Python

55

Playground - Implementación de una queue

Día 21

56

¡Lo lograste!

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende Inglés, Desarrollo Web, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Comienza ahora

Termina en:

1 Días
11 Hrs
48 Min
25 Seg

Maneja las excepciones

31/56

Aportes 31

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Investigando el raise va a dejar el traceback es decir mostrara la parte del código que genera el error, para Desarrolladores, pues bien, pero para usuario final nada, feo, por tanto, para evitar esto se puede generalizar las Excepciones con:

except Exception as e:
        return f"Error: {str(e)}"

Si lo colocan en este reto no funciona, porque el playground exige que visualice con raise., pero en la buena práctica sera util


.
.
.
.
.

def calculate_discounted_price(price, discount):

  if not isinstance(price,(int,float)) or not isinstance(discount,(int,float)):
    raise TypeError("El precio y el descuento deben ser números")

  if price < 0 or discount < 0:
    raise ValueError("El precio y el descuento deben ser valores positivos")

  try:
    return price - (price * discount)
  except Exception as e:
    raise Exception(f"Ha ocurrido un error inesperado")
No logro entender por qué se pide levantar una excepción dentro de otra, no le encuentro sentido al playground... Para mí, la solución sería de este modo: ```python def calculate_average(numbers): try: return (sum(numbers)/len(numbers)) except ZeroDivisionError: return ("La lista está vacía") except TypeError: return ("La lista contiene elementos no numéricos") ```
\> \> \> \> \> \> ```js def calculate_discounted_price(price, discount): if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)): raise TypeError("El precio y el descuento deben ser números") else: if price < 0 or discount < 0: raise ValueError("El precio y el descuento deben ser valores positivos") else: try: return(price * (1-discount)) except Exception as e: return e("Ha ocurrido un error inesperado") ```
def calculate_discounted_price(price, discount):
    # Tu código aquí 👈
    if type(price) == str or type(discount) == str:
        raise TypeError("El precio y el descuento deben ser números")
    if price < 0 or discount < 0 :
        raise ValueError("El precio y el descuento deben ser valores positivos")
    try:
        return price - (price * discount)
    except Exception as e:
        return f"Ha ocurrido un error inesperado {e}"

🛡️🛡️Escudo anti-spoilers🛡️🛡️

Mi solución al reto:

def calculate_discounted_price(price, discount):
  if not (isinstance(price, (int, float)) and isinstance(discount, (int, float))):
    raise TypeError("El precio y el descuento deben ser números") 
  if price <= 0 or discount < 0:
    raise ValueError("El precio y el descuento deben ser valores positivos") 
  try:
    return price - (price * discount)
  except:
    raise Exception(f"Ha ocurrido un error inesperado")
def calculate_discounted_price(price, discount):
  
  if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)):
      raise TypeError("El precio y el descuento deben ser números")
  
  if price < 0 or discount < 0:
     raise ValueError("El precio y el descuento deben ser valores positivos")
  
  try:
     return (price*(1-discount))
  except Exception as error:
     raise Exception("Ha ocurrido un error inesperado")

if __name__ == '__main__':
    response = calculate_discounted_price(100, 0.2)
    print(response) #Output: 80.0

    response = calculate_discounted_price(-50, 0.2)
    print(response) #ValueError: El precio y el descuento deben ser valores positivos

    response = calculate_discounted_price("50", 0.2)
    print(response) #ValueError: El precio y el descuento deben ser números


.
.
.
.
.
.
.
.
.
.

Mi código:

def calculate_discounted_price(price, discount):
    try:
        if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)):
            raise TypeError("El precio y el descuento deben ser números")

        if price < 0 or discount < 0:
            raise ValueError("El precio y el descuento deben ser valores positivos")

        discounted_price = price * (1 - discount)
        return discounted_price

    except ValueError as ve:
        raise ve

    except TypeError as te:
        raise te

    except Exception as e:
        raise Exception("Ha ocurrido un error inesperado: " + str(e))

Solución 😄.
.

.
.
.
.

def calculate_discounted_price(price, discount):
    if not are_numbers(price, discount):
        raise TypeError(
          "El precio y el descuento deben ser números")
    
    if price < 0 or discount < 0:
        raise ValueError(
          "El precio y el descuento deben ser valores positivos")
    
    try:
      return price * (1 - discount)
    except Exception as e:
      raise Exception(e)

def are_numbers(*args):
    return all(isinstance(val, (int, float)) for val in args)


.
.
.
.
.
.
.
.
.
.
.

Listo!!!

Precio = "0"
Descuento = "0"
while Precio == “0” or Descuento == “0”:
try:
Precio = int(input(“Precio del producto($):”))
Descuento = int(input(“Descuento del producto(%):”))
except ValueError:
print(“El precio y el descuento deben ser números”)

def Negocio(Precio,Descuento):
try:
TotalaPagar = Precio - Precio*Descuento/100
if TotalaPagar < 0:
raise ValueError(“El precio y el descuento deben ser valores positivos”)
else:
print(f"El Valor a pagar es de ${TotalaPagar}")

except Exception:
       print("Ha ocurrido un error inesperado")

Negocio(Precio,Descuento)

Al principio, añadí el mensaje de error de ValueError tanto en mi línea 4 como en la 7. Después, me di cuenta de que podría funcionar si lo agregaba solo en la línea 7. Sin embargo, no estoy segura de si es correcto escribirlo de esa manera.

def calculate_discounted_price(price, discount):
  try:
    if price < 0 or discount < 0:
      raise ValueError
    return price*(1-discount)
  except ValueError:
    raise ValueError("El precio y el descuento deben ser valores positivos")
  except TypeError:
    raise TypeError("El precio y el descuento deben ser números")
  except:
    raise BaseException("Ha ocurrido un error inesperado")
def calculate_discounted_price(price, discount):
    if not isinstance(discount,(int,float)) or not isinstance(price,(int,float)) :
        raise TypeError("El precio y el descuento deben ser números")
    if price < 0 or discount < 0:
        raise ValueError("El precio y el descuento deben ser valores positivos")
   
    
    try:
        return price*(1-discount)
    except Exception as e:
        print("Ha ocurrido un error inesperado "+ str(e))

Para pasar todas las pruebas fue inportante testear primero la condición de que sea un número y después la condición de que no sea un valor negativo. Si lo hacia al revés no pasaba el último test “test_calculate_discounted_price_non_numeric_values”


.
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

def calculate_discounted_price(price, discount):
    try:
        if not isinstance(price, int) or not isinstance(discount, (float,int)):
            raise TypeError('El precio y el descuento deben ser números')
        elif price < 0 or discount < 0:
            raise ValueError('El precio y el descuento deben ser valores positivos')

        return price * (1 - discount)
    except (ValueError, TypeError) as e:
        raise e
    except Exception:
        raise Exception("Ha ocurrido un error inesperado")


Mi aporte:

def calculate_discounted_price(price, disc):
  if not isinstance(price, (int, float)) or not isinstance(disc, (int, float)): 
    raise TypeError('El precio y el descuento deben ser números') 
  if price < 0 or disc < 0:
    raise ValueError('El precio y el descuento deben ser valores positivos')
  try:
    return price * (1 - disc)
  except:
    raise Exception('Ha ocurrido un error inesperado')


.
.

def calculate_discounted_price(price, discount):

  validarTipo = lambda x: True if not  (isinstance(x, int) ^isinstance(x, float)) else False
  if validarTipo(price) or validarTipo(discount):
    raise TypeError("El precio y el descuento deben ser números")
    
  if price < 0 or discount < 0:
    raise ValueError("El precio y el descuento deben ser valores positivos")

  try:
    descuento = price - price*discount
  except Exception as e:
    raise Exception(e)

  return descuento


.
.
.
.
.
.
.

def calculate_discounted_price(price, discount):
  if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)):
    raise TypeError('El precio y el descuento deben ser números')
    
  if price <= 0 or discount <= 0:
    raise ValueError('El precio y el descuento deben ser valores positivos')
    
  try:
    return price * (1 + (-1 * discount))
  except Exception:
    raise Exception('Ha ocurrido un error inesperado')

Aquí mi solución, lo que me costó trabajo fue el if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)): ya que no lo vimos en clase entonces no lo tengo presente


Me esforcé por que mi código sea lo más legible posible, aquí mi solución.

def calculate_discounted_price(price, discount):
  # Tu código aquí 👈
  if not is_numeric(price) or  not is_numeric(discount):
    raise TypeError("El precio y el descuento deben ser números")
  elif price<0 or discount<0:
    raise ValueError("El precio y el descuento deben ser valores positivos")
  try: 
    return price-(price*discount)
  except:
    raise Exception("Ha ocurrido un error inesperado")

def is_numeric(element):
    if not isinstance(element, (int, float)):
      return False
    return True


.
.
Listo! 🐍👌🏼
.
.
.
.
.
.

def calculate_discounted_price(price, discount):
  #clausula raise para el caso de valores no numéricos
  if type(price) == str or type(discount) == str:
    raise TypeError("El precio y el descuento deben ser números")
  #clausula raise para el caso de número negativos
  if price < 0 or discount < 0:
    raise ValueError("El precio y el descuento deben ser valores positivos")
  #bloque try-except considerando el caso de error inesperado
  try:
    return price * (1-discount)
  #excepción extra
  except Exception as e:
    raise Exception("Ha ocurrido un error inesperado"

Dejo por acá mi respuesta.

def calculate_discounted_price(price, discount):
  try:
    if price < 0 or discount < 0:
      raise ValueError()
    return price - (price * discount)
  except TypeError:
    raise TypeError('El precio y el descuento deben ser números')
  except ValueError:
    raise ValueError('El precio y el descuento deben ser valores positivos')
  except:
    raise Exception('Ha ocurrido un error inesperado')
  pass


.
.
.
.
.
.
.
.
.
.
.
def calculate_discounted_price(price, discount):
try:
if price < 0 or discount < 0:
raise ValueError(“El precio y el descuento deben ser valores positivos”)

    if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)):
        raise TypeError("El precio y el descuento deben ser números")

    discounted_price = price - (price * discount)
    return discounted_price

except ValueError as ve:
    raise ve

except TypeError as te:
    raise te

except Exception as e:
    raise Exception("Ha ocurrido un error inesperado: " + str(e))
def calculate_discounted_price(price, discount):

    if type(price) is str or type(discount) is str:
      raise TypeError("El precio y el descuento deben ser números") 

    if price < 0 or discount < 0:
      raise ValueError("El precio y el descuento deben ser valores positivos")
     

    return price*(1-discount)  
def calculate_discounted_price(price, discount):
    try:
        if not isinstance(price, (int, float)) or not isinstance(discount, (int, float)):
            raise TypeError("El precio y el descuento deben ser números")

        if price < 0 or discount < 0:
            raise ValueError("El precio y el descuento deben ser valores positivos")

        return price * (1 - discount)

    except Exception as e:
        print(f"Ha ocurrido un error inesperado: {str(e)}")
        raise


o
o
o
o
o
o
o
def calculate_discounted_price(price, discount):
try:
if (price < 0 or discount < 0):
raise ValueError
if (not isinstance(price, (int,float))) or (not isinstance(discount, (int,float))):
raise TypeError
except ValueError:
return "El precio y el descuento deben ser valores positivos"
except TypeError:
return "El precio y el descuento deben ser números"
except BaseException as e:
return "Ha ocurrido un error inesperado " + e
else:
return price - (price * discount)


.
.
.
.
.
.
.


.
.
.
.
.


*
*
*
*
*

def calculate_discounted_price(price, discount):
    if (type(price) != int and type(price) != float) or (type(discount) != int and type(discount) != float):
        raise TypeError("El precio y el descuento deben ser números")
    if price < 0 or discount < 0:
        raise ValueError("El precio y el descuento deben ser valores positivos")
    try:
        return price - (price * discount)
    except:
        return "Ha ocurrido un error inesperado"


.
.

def calculate_discounted_price(price, discount):
   if (type(price) != float and type(price) != int) or (type(discount) != int and type(discount) != float):
      raise TypeError("El precio y el descuento deben ser números")
   
   if price < 0 or discount < 0:
      raise ValueError("El precio y el descuento deben ser valores positivos")

   try:
      return price * (1-discount)
   except Exception as error:
      raise Exception("Ha ocurrido un error inesperado\n", error)
undefined