Python tiene tres tipos diferentes de números integrados: enteros (int), de coma flotante (float) y complejos (complex).
Las fracciones (fractions.Fraction) y los decimales (decimal.Decimal) también están disponibles mediante importación 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 totalmente 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 usen con los operadores aritméticos binarios (+, -, *, /, // y %).
Los operadores de suma y resta se comportan como en las matemáticas habituales.
Si uno o varios de los operandos es un float, los int restantes también se convertirán a 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 coma flotante a un número determinado de decimales.
Si no se especifica el número 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 máxima prioridad, seguidos de **, después *, /, //, %, + 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; el número de dígitos solo está limitado por la memoria disponible del sistema anfitrión.
Los números de coma flotante normalmente 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, ambas representadas por números de coma flotante.
Para un análisis más detallado de los problemas y las limitaciones de la aritmética de coma flotante en los distintos lenguajes de programación, echa un vistazo a 0.30000000000000004.com y The Python Tutorial.
La empresa para la que trabajas quiere reducir su huella de carbono, así que quieren que escribas un programa que calcule el consumo de energía y el coste de hacer funcionar sus aparatos electrónicos.
Tu empleador tiene un programa que calcula el tiempo que se tarda en hacer funcionar distintos aparatos electrónicos. Actualmente, el tiempo se almacena en horas. Cuando tu empleador sumó las horas, se dio cuenta de que la duración no era correcta. Quieren que añadas 3 horas extra a los datos de tiempo. También les gustaría saber cuántas horas «extra» hay tras convertir los datos a días «completos» (un día son 24 horas). Es posible que el tiempo que hay que convertir no esté en días completos.
Implementa una función get_extra_hours() que acepte un número entero que contenga el número de horas.
La función debe hacer el ajuste correspondiente de «horas extra» y, a continuación, devolver con return un número 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 conocer el consumo de energía de los distintos aparatos electrónicos en kW. kW significa kilovatio; el vatio es 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 número entero que contenga el número de vatios.
La función debe devolver con return los vatios como kilovatios, redondeados a 1 decimal.
>>> get_kW_value(1150)
1.2
Para poder calcular el coste de hacer funcionar los aparatos electrónicos, tu empleador necesita conocer el consumo de energía en kWh. kWh significa kilovatio-hora, donde la hora es una unidad de tiempo. Un kilovatio-hora == 1000 vatios utilizados 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, a continuación, hacer una división entera del resultado entre 3600.
Implementa una función get_kWh_value() que acepte un número entero que contenga el número de vatios.
La función debe devolver con return los kilovatios-hora como un número entero.
>>> get_kWh_value(5000000)
1
Los aparatos electrónicos no son 100 % eficientes. Por lo tanto, 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 decimal entre 0 y 100) entre 100.
Implementa una función get_efficiency() que acepte un número decimal que contenga el factor de potencia.
La función debe devolver con return la eficiencia calculada como un número decimal.
>>> get_efficiency(80)
0.8
Tu empleador quiere conocer el coste de hacer funcionar los aparatos electrónicos. El coste de hacer funcionar los aparatos electrónicos es la potencia utilizada multiplicada por el coste por kWh. La potencia utilizada es la potencia dada dividida entre la eficiencia calculada.
Implementa una función get_cost(<watts>,<power_factor>,<price>) que acepte un número entero que contenga el número de vatios, un número decimal que tenga el factor de potencia y un número decimal que contenga el coste por kWh.
La función debe devolver con return el coste de hacer funcionar los aparatos electrónicos como un número decimal.
>>> 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.