Type Conversion
Spesso capita (anche molto più di quanto ce ne rendiamo conto) che nelle righe di codice di effettuare delle operazioni tra valori di tipo diverso.
Lo abbiamo già visto tra numeri interi e floats. Infatti i numeri interi venivano convertiti implicitamente in float dall’interprete e poi effettuava l’operazione. In questo casi si parla di conversioni implicite.
In realtà è raccomandabile (finchè ce ne possiamo rendere conto) di esplicitare sempre le conversioni di tipo, in modo da evitare a volte risultati non desiderati.
Un caso molto utile è per esempio quello di convertire delle stringhe che riportano numeri in integers o float. Questo sarà possibile fintanto che la stringa sia un numero adatto alla conversione.
Per convertire una stringa in interi si utilizza la funzione int(), passando la stringa da convertire come argomento della funzione. Mentre per convertire una stringa in float si utilizza la funzione float().
Abbiamo visto alcune operazioni interessanti sulle stringhe. Abbiniamo entrambe i casi (operazione su stringhe e numeri) per ottenere dei casi davvero interessanti.
>>> int( "3" * 3 ) - 100
233
>>> float( "3" + "." + "14" ) * 2
6.28
Conversione numerica negli input di valori
La maggiore utilità della conversione numerica di stringhe in numeri è proprio quando utilizzeremo la funzione input() all’interno di programmi.
Infatti ogni volta che immetteremo un valore a seguito della chiamata di input() questo sarà sempre ed univocamente una stringa indipendentemente se abbiamo inserito caratteri o numeri. Quindi se abbiamo bisogno di un valore numerico da inserire per effettuare per esempio un calcolo sarà necessario effettuare la conversione di tipo.
>>> a = input (" In che anno siamo? ")
In che anno siamo? 2016
>>> n = int(a) - 10
>>> print ("Dieci anni fa era il", n, "!")
Dieci anni fa era il 2006!
Questo semplice programma riassume un po’ tutto quello che abbiamo fatto finora. Inoltre vi è un altro caso interessante all’interno della funzione print.
Abbiamo utilizzato tre argomenti invece di uno solo. Questo significa che la funzione print è in grado di fare una concatenzione di stringhe. Inoltre vi è stata una conversione implicita di n da integer a stringa.