In Python esistono tre diversi tipi di numeri integrati: ints, floats e complex. In questo esercizio, però, avrai a che fare solo con ints e floats.
Gli ints sono numeri interi, ad esempio 1234, -10, 20201278.
In Python i numeri interi hanno precisione arbitraria: il numero di cifre è limitato solo dalla memoria disponibile del sistema host.
I floats sono numeri che contengono un punto decimale, ad esempio 0.0, 3.14, -9.01.
I numeri in virgola mobile sono di solito implementati in Python usando un double in C (15 cifre decimali di precisione), ma la loro rappresentazione varia in base al sistema host e ad altri dettagli di implementazione. Questo può riservare qualche sorpresa quando si lavora con i float, ma è «abbastanza buono» per la maggior parte delle situazioni.
Puoi trovare maggiori dettagli e discussioni nelle seguenti risorse:
int() integratafloat() integrataPython supporta pienamente l'aritmetica tra ints e floats. Quando vengono usati con gli operatori aritmetici binari (+, -, *, /, // e %), converte i numeri di tipo più ristretto per adattarli alle loro controparti di tipo più ampio.
Python considera gli ints più ristretti dei floats. Quindi, usare un float in un'espressione garantisce che anche il risultato sarà un float. Tuttavia, quando si esegue una divisione il risultato sarà sempre un float, anche se vengono usati solo numeri interi.
# 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 serve un risultato intero, puoi usare // per troncare il risultato.
>>> 6 // 2
3
>>> 7 // 4
1
Per convertire un float in un intero, puoi usare int(). Per convertire un intero in un float, puoi usare float().
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Il tuo amico Chandler ha in programma di visitare paesi esotici in tutto il mondo. Purtroppo, Chandler non è bravo in matematica. È piuttosto preoccupato di essere truffato dagli uffici di cambio durante il viaggio, e vuole che tu gli costruisca un calcolatore di valuta. Ecco le sue specifiche per l'app:
Crea la funzione exchange_money(), che prende 2 parametri:
budget : la somma di denaro che intendi cambiare.exchange_rate : la quantità di valuta nazionale pari a un'unità di valuta estera.Questa funzione deve restituire il valore della valuta cambiata.
Nota: Se la tua valuta è USD e vuoi cambiare USD in EUR con un tasso di cambio di 1.20, allora 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Crea la funzione get_change(), che prende 2 parametri:
budget : la somma di denaro prima del cambio.exchanging_value : la somma di denaro che viene presa dal budget per essere cambiata.Questa funzione deve restituire la somma di denaro che rimane del budget.
>>> get_change(127.5, 120)
7.5
Crea la funzione get_value_of_bills(), che prende 2 parametri:
denomination : il valore di una singola banconota.number_of_bills : il numero totale di banconote.Questo ufficio di cambio tratta solo contanti in determinati tagli. Il totale che ricevi deve essere divisibile per il valore di una «banconota» o unità, il che può lasciare una frazione o un resto. La funzione deve restituire solo il valore totale delle banconote (escludendo le frazioni) che l'ufficio restituirebbe. Purtroppo, l'ufficio può tenersi il resto come bonus aggiuntivo.
>>> get_value_of_bills(5, 128)
640
Crea la funzione get_number_of_bills(), che prende amount e denomination.
Questa funzione deve restituire il numero di banconote che puoi ricevere con l'amount indicato. In altre parole: quante banconote intere stanno nella somma iniziale? Ricorda: puoi ricevere solo banconote intere, non frazioni di banconota, quindi ricordati di dividere di conseguenza. In pratica, stai arrotondando per difetto alla banconota intera più vicina.
>>> get_number_of_bills(127.5, 5)
25
Crea la funzione get_leftover_of_bills(), che prende amount e denomination.
Questa funzione deve restituire l'importo avanzato che non può essere restituito partendo dalla somma iniziale, data la denominazione delle banconote. È molto importante sapere esattamente quanto può tenersi l'ufficio.
>>> get_leftover_of_bills(127.5, 20)
7.5
Crea la funzione exchangeable_value(), che prende budget, exchange_rate, spread e denomination.
Il parametro spread è la percentuale trattenuta come commissione di cambio, scritta come numero intero.
Va convertita in decimale dividendola per 100.
Se 1.00 EUR == 1.20 USD e lo spread è 10, il tasso di cambio effettivo sarà: 1.00 EUR == 1.32 USD, perché il 10% di 1.20 è 0.12 e questa commissione aggiuntiva viene sommata al cambio.
Questa funzione deve restituire il valore massimo della nuova valuta dopo aver calcolato il tasso di cambio più lo spread. Ricorda che la denominazione della valuta è un numero intero e non può essere suddivisa.
Nota: Il valore restituito deve essere di tipo int.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.