TypeError: la operación no acepta el tipo de objeto que recibió
No existe una conversión universal que arregle un TypeError. Primero decide qué operación querías hacer y qué tipo debería tener cada participante.
Empieza por la intención, no por str() o int()
cantidad = 3 print(cantidad + " unidades")
Si querías construir texto, una f-string expresa mejor la intención: f"{cantidad} unidades". Si querías sumar cantidades, convertir todo a texto sería precisamente lo contrario de la solución.
TypeError no significa siempre “mezclé número y string”
Operación incompatible
3 + "4" o indexar un objeto que no admite esa operación.
Objeto no invocable
numero() cuando numero contiene un entero y ya no una función.
Argumentos incorrectos
Una función recibe más, menos o tipos de argumentos que no sabe procesar.
Objeto no iterable
Un for, in u otra operación espera poder recorrer el objeto y no puede.
Inspecciona los tipos que existen de verdad
print(type(cantidad))
print(type(" unidades"))Usa type() de forma temporal para contrastar tu supuesto. Después quita el diagnóstico y corrige el modelo de datos.
TypeError frente a ValueError
Si int("12") funciona y int("doce") falla, el tipo de entrada sigue siendo str en ambos casos: ahí el problema es el valor concreto y aparece ValueError. Si la operación ni siquiera admite ese tipo, estás en territorio de TypeError.
Referencia técnica: documentación oficial de excepciones de Python.