Existem três tipos diferentes de números embutidos no Python: ints, floats e complex. No entanto, neste exercício você vai lidar apenas com ints e floats.
ints são números inteiros. Por exemplo: 1234, -10, 20201278.
Os inteiros em Python têm precisão arbitrária: o número de dígitos é limitado apenas pela memória disponível do sistema hospedeiro.
floats são números que contêm um ponto decimal. Por exemplo: 0.0,3.14,-9.01.
Números de ponto flutuante geralmente são implementados em Python usando um double em C (15 casas decimais de precisão), mas a representação varia conforme o sistema hospedeiro e outros detalhes de implementação. Isso pode gerar algumas surpresas ao trabalhar com números de ponto flutuante, mas é "bom o suficiente" para a maioria das situações.
Você pode ver mais detalhes e discussões nos seguintes recursos:
int() embutidofloat() embutidoO Python dá suporte total à aritmética entre ints e floats. Ele converte números mais restritos para corresponder às suas contrapartes menos restritas quando usados com os operadores aritméticos binários (+, -, *, /, // e %).
O Python considera ints mais restritos que floats. Então, usar um número de ponto flutuante em uma expressão garante que o resultado também será um número de ponto flutuante. No entanto, ao fazer divisão, o resultado sempre será um número de ponto flutuante, mesmo que apenas números inteiros sejam usados.
# 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
Se você precisar de um resultado inteiro, pode usar // para truncar o resultado.
>>> 6 // 2
3
>>> 7 // 4
1
Para converter um número de ponto flutuante em um número inteiro, use int(). Para converter um número inteiro em um número de ponto flutuante, use float().
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Seu amigo Chandler planeja visitar países exóticos pelo mundo todo. Infelizmente, Chandler não é bom em matemática. Ele está bastante preocupado em ser enganado pelas casas de câmbio durante a viagem, e quer que você faça uma calculadora de câmbio para ele. Aqui estão as especificações dele para o aplicativo:
Crie a função exchange_money(), que recebe 2 parâmetros:
budget : a quantia de dinheiro que você planeja trocar.exchange_rate : a quantia de moeda nacional equivalente a uma unidade de moeda estrangeira.Essa função deve retornar o valor da moeda trocada.
Nota: Se a sua moeda for USD e você quiser trocar USD por EUR com uma taxa de câmbio de 1.20, então 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Crie a função get_change(), que recebe 2 parâmetros:
budget : a quantia de dinheiro antes da troca.exchanging_value : a quantia de dinheiro que é retirada do orçamento para ser trocada.Essa função deve retornar a quantia de dinheiro que sobra do orçamento.
>>> get_change(127.5, 120)
7.5
Crie a função get_value_of_bills(), que recebe 2 parâmetros:
denomination : o valor de uma única cédula.number_of_bills : o número total de cédulas.Essa casa de câmbio só trabalha com dinheiro em determinados incrementos. O total que você recebe precisa ser divisível pelo valor de uma "cédula" ou unidade, o que pode deixar uma fração ou um resto. Sua função deve retornar apenas o valor total das cédulas (excluindo valores fracionados) que a casa de câmbio devolveria. Infelizmente, a casa de câmbio fica com o resto/troco como bônus extra.
>>> get_value_of_bills(5, 128)
640
Crie a função get_number_of_bills(), que recebe amount e denomination.
Essa função deve retornar o número de cédulas que você pode receber dentro do amount informado. Em outras palavras: quantas cédulas inteiras cabem no valor inicial? Lembre-se: você só pode receber cédulas inteiras, não frações de cédulas, então não se esqueça de dividir de acordo. Na prática, você está arredondando para baixo até a cédula/denominação inteira mais próxima.
>>> get_number_of_bills(127.5, 5)
25
Crie a função get_leftover_of_bills(), que recebe amount e denomination.
Essa função deve retornar a quantia restante que não pode ser devolvida a partir do amount inicial, dada a denominação das cédulas. É muito importante saber exatamente quanto a casa de câmbio fica.
>>> get_leftover_of_bills(127.5, 20)
7.5
Crie a função exchangeable_value(), que recebe budget, exchange_rate, spread e denomination.
O parâmetro spread é a porcentagem cobrada como taxa de câmbio, escrita como um número inteiro.
É preciso convertê-la para decimal dividindo-a por 100.
Se 1.00 EUR == 1.20 USD e o spread for 10, a taxa de câmbio real será: 1.00 EUR == 1.32 USD, porque 10% de 1.20 é 0.12, e essa taxa adicional é somada à troca.
Essa função deve retornar o valor máximo da nova moeda depois de calcular a taxa de câmbio mais o spread. Lembre-se de que a denominação da moeda é um número inteiro e não pode ser subdividida.
Nota: O valor retornado deve ser do tipo int.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.