Python tiene tres tipos diferentes de números integrados: enteros (int), de punto flotante (float) y complejos (complex).
Las fracciones (fractions.Fraction) y los decimales (decimal.Decimal) también están disponibles al importarlos desde la biblioteca estándar.
Los números enteros, incluidos los hexadecimales (hex()), octales (oct()) y binarios (bin()) sin decimales, también se identifican como ints:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
Los números que contienen un punto decimal (con o sin parte fraccionaria) se identifican como floats:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
Python admite por completo la aritmética entre estos distintos tipos de números, y convertirá los números más estrechos para que coincidan con sus equivalentes menos estrechos cuando se usan con los operadores aritméticos binarios (+, -, *, /, // y %).
Los operadores de suma y resta se comportan como en las matemáticas normales.
Si uno o más de los operandos es un float, los int restantes también se convertirán en float:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Al igual que con la suma y la resta, la multiplicación convertirá los números más estrechos para que coincidan con sus equivalentes menos estrechos:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
La división siempre devuelve un float, incluso si el resultado es un número entero:
>>> 6/5
1.2
>>> 6/2
3.0
Si necesitas un resultado int, puedes usar la división entera para truncar el resultado.
La división entera se realiza con el operador //:
>>> 6//5
1
>>> 6//2
3
El operador módulo (%) devuelve el residuo de la división de los dos operandos:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 leftover
>>> 5 % 3
2
Otra forma de ver 5 % 3:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
Python proporciona una función integrada round(number, <decimal_places>) para redondear un número de punto flotante a una cantidad determinada de decimales.
Si no se especifica una cantidad de decimales, el número se redondea al entero más cercano y devolverá un int:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
Python te permite usar paréntesis para agrupar expresiones. Esto es útil cuando quieres anular el orden de operaciones predeterminado.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
Python sigue la regla PEMDAS para la precedencia de operadores.
Esto significa que los cálculos dentro de () tienen la prioridad más alta, seguidos de **, luego *, /, //, %, + y -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 64, then 2 + 192
>>> 2 + 3 * 4 ** 4
770
Los enteros en Python tienen precisión arbitraria: la cantidad de dígitos está limitada solo por la memoria disponible del sistema anfitrión.
Los números de punto flotante generalmente se implementan usando un double en C (15 decimales de precisión), pero su representación varía según el sistema anfitrión.
Los números complejos tienen una parte real y una parte imaginary, y ambas se representan con números de punto flotante.
Para un análisis más detallado de los problemas y las limitaciones de la aritmética de punto flotante en los distintos lenguajes de programación, echa un vistazo a 0.30000000000000004.com y el tutorial de Python.
La empresa para la que trabajas quiere reducir su huella de carbono, así que quiere que escribas un programa que calcule el consumo de energía y el costo de hacer funcionar sus aparatos electrónicos.
Tu empleador tiene un programa que calcula el tiempo que tardan en funcionar los diferentes aparatos electrónicos. Actualmente, el tiempo se almacena en horas. Cuando tu empleador sumó las horas, notó que la duración del tiempo no era correcta. Quiere que agregues 3 horas extra a los datos de tiempo. También le gustaría saber cuántas horas «extra» hay después de convertir los datos a días «completos» (un día son 24 horas). Es posible que el tiempo a convertir no esté en días completos.
Implementa una función get_extra_hours() que acepte un entero con el número de horas.
La función debe hacer el ajuste de «horas extra» correspondiente y luego return un entero que represente cuántas horas hay que quitar del total para obtener el tiempo en días «completos».
>>> get_extra_hours(25)
4
Tu empleador quiere saber el consumo de energía de los diferentes aparatos electrónicos en kW. kW significa kilovatio, y los vatios son una unidad de potencia. Kilo en el nombre de la unidad es un prefijo del sistema métrico que significa 1000. Un kilovatio == 1000 vatios.
Implementa una función get_kW_value() que acepte un entero con el número de vatios.
La función debe entonces return los vatios como kilovatios redondeados a 1 decimal.
>>> get_kW_value(1150)
1.2
Para poder calcular el costo de hacer funcionar los aparatos electrónicos, tu empleador necesita saber el consumo de energía en kWh. kWh significa kilovatio-hora, y la hora es una unidad de tiempo. Un kilovatio-hora == 1000 vatios usados durante 1 hora. Una hora se compone de 60 minutos y un minuto se compone de 60 segundos. Una hora equivale a 3600 segundos. Para calcular el valor en kWh, debes convertir los vatios a kW y luego hacer la división entera del resultado entre 3600.
Implementa una función get_kWh_value() que acepte un entero con el número de vatios.
La función debe entonces return los kilovatios-hora como un entero.
>>> get_kWh_value(5000000)
1
Los aparatos electrónicos no son 100% eficientes. Por eso, tu empleador quiere que calcules la eficiencia de los aparatos electrónicos. Para obtener la eficiencia, debes dividir el factor de potencia (un número de punto flotante entre 0 y 100) entre 100.
Implementa una función get_efficiency() que acepte un número de punto flotante con el factor de potencia.
La función debe entonces return la eficiencia calculada como un número de punto flotante.
>>> get_efficiency(80)
0.8
Tu empleador quiere saber el costo de hacer funcionar los aparatos electrónicos. El costo de hacer funcionar los aparatos electrónicos es la potencia usada multiplicada por el costo por kWh. La potencia usada es la potencia dada dividida entre la eficiencia calculada.
Implementa una función get_cost(<watts>,<power_factor>,<price>) que acepte un entero con el número de vatios, un número de punto flotante con el factor de potencia y un número de punto flotante con el costo por kWh.
La función debe entonces return el costo de hacer funcionar los aparatos electrónicos como un número de punto flotante.
>>> get_cost(5000000, 80, 0.25)
0.3125
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.