隆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

Maneja las excepciones

31/56

Aportes 30

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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")
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)::
  # Tu c贸digo aqu铆 馃憟
  type_numbers = (int, float)

  if type(price) not in type_numbers or type(discount) not in type_numbers:
    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 - price * discount

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(鈥淧recio del producto($):鈥))
Descuento = int(input(鈥淒escuento del producto(%):鈥))
except ValueError:
print(鈥淓l precio y el descuento deben ser n煤meros鈥)

def Negocio(Precio,Descuento):
try:
TotalaPagar = Precio - Precio*Descuento/100
if TotalaPagar < 0:
raise ValueError(鈥淓l 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 鈥渢est_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 nmeros')
        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 nmeros')
    
  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 nmeros')
  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(鈥淓l 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