En Python hay tres tipos diferentes de números integrados: ints, floats y complex. Sin embargo, en este ejercicio solo vas a trabajar con ints y floats.
Los ints son números enteros. Por ejemplo: 1234, -10, 20201278.
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 floats son números que contienen un punto decimal. Por ejemplo: 0.0, 3.14, -9.01.
Los números de coma flotante se suelen implementar en Python usando un double de C (15 decimales de precisión), pero su representación varía según el sistema anfitrión y otros detalles de implementación. Esto puede dar alguna sorpresa al trabajar con floats, pero es «suficientemente bueno» para la mayoría de las situaciones.
Puedes ver más detalles y debates en los siguientes recursos:
int()float()Python admite por completo la aritmética entre ints y floats. Convierte los números de tipo más estrecho para que coincidan con sus equivalentes de tipo más amplio cuando se usan con los operadores aritméticos binarios (+, -, *, /, // y %).
Python considera que los ints son más estrechos que los floats. Por eso, usar un float en una expresión garantiza que el resultado también sea un float. Sin embargo, al hacer una división, el resultado siempre será un float, incluso si solo se usan enteros.
# The int is widened to a float here, and a float type is returned.
>>> 3 + 4.0
7.0
>>> 3 * 4.0
12.0
>>> 3 - 2.0
1.0
# Division always returns a float.
>>> 6 / 2
3.0
>>> 7 / 4
1.75
# Calculating remainders.
>>> 7 % 4
3
>>> 2 % 4
2
>>> 12.75 % 3
0.75
Si necesitas un resultado de tipo int, puedes usar // para truncar el resultado.
>>> 6 // 2
3
>>> 7 // 4
1
Para convertir un float en un entero, puedes usar int(). Para convertir un entero en un float, puedes usar float().
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Tu amigo Chandler tiene previsto visitar países exóticos de todo el mundo. Por desgracia, las habilidades matemáticas de Chandler no son buenas. Está bastante preocupado por que le estafen en los cambios de divisa durante su viaje, y quiere que le hagas una calculadora de divisas. Estas son sus especificaciones para la aplicación:
Crea la función exchange_money(), que recibe 2 parámetros:
budget: la cantidad de dinero que planeas cambiar.exchange_rate: la cantidad de moneda nacional equivalente a una unidad de moneda extranjera.Esta función debe devolver el valor de la divisa cambiada.
Nota: Si tu moneda es el USD y quieres cambiar USD por EUR con un tipo de cambio de 1.20, entonces 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Crea la función get_change(), que recibe 2 parámetros:
budget: la cantidad de dinero antes del cambio.exchanging_value: la cantidad de dinero que se toma del presupuesto para cambiarla.Esta función debe devolver la cantidad de dinero que queda del presupuesto.
>>> get_change(127.5, 120)
7.5
Crea la función get_value_of_bills(), que recibe 2 parámetros:
denomination: el valor de un solo billete.number_of_bills: el número total de billetes.Este puesto de cambio solo trabaja con efectivo en determinados incrementos. El total que recibes debe ser divisible por el valor de un «billete» o unidad, lo que puede dejar una fracción o un residuo. Tu función debe devolver solo el valor total de los billetes (excluyendo las cantidades fraccionarias) que el puesto te devolvería. Por desgracia, el puesto se queda con el residuo/vuelto como bonificación adicional.
>>> get_value_of_bills(5, 128)
640
Crea la función get_number_of_bills(), que recibe amount y denomination.
Esta función debe devolver el número de billetes que puedes recibir dentro del amount dado. En otras palabras: ¿cuántos billetes completos de divisa caben en la cantidad inicial? Recuerda que solo puedes recibir billetes completos, no fracciones de billetes, así que divide en consecuencia. En efecto, estás redondeando hacia abajo al billete/denominación completo más cercano.
>>> get_number_of_bills(127.5, 5)
25
Crea la función get_leftover_of_bills(), que recibe amount y denomination.
Esta función debe devolver la cantidad sobrante que no se puede devolver a partir de tu amount inicial dada la denominación de los billetes. Es muy importante saber exactamente cuánto se queda el puesto.
>>> get_leftover_of_bills(127.5, 20)
7.5
Crea la función exchangeable_value(), que recibe budget, exchange_rate, spread y denomination.
El parámetro spread es el porcentaje que se cobra como comisión de cambio, escrito como un número entero.
Hay que convertirlo a decimal dividiéndolo entre 100.
Si 1.00 EUR == 1.20 USD y el spread es 10, el tipo de cambio real será: 1.00 EUR == 1.32 USD, porque el 10 % de 1,20 es 0,12, y esta comisión adicional se suma al cambio.
Esta función debe devolver el valor máximo de la nueva divisa después de calcular el tipo de cambio más el spread. Recuerda que la denominación de la divisa es un número entero y no se puede subdividir.
Nota: El valor devuelto debe ser de tipo int.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.