I tipi di dati in Python - int, long, float, tuple- casting

Roger de la Fresnaye

A differenza di altri linguaggi di programmazione Python, non ha quella struttura rigida della fase dichiarativa delle variabili.

Tale fatto, se da un lato consente la definizione delle variabili in qualunque punto, dall'altro il programma "interpreta" in maniera automatica il tipo di dato numerico che gli viene inserito da tastiera.

In Python sono definiti i tipi di dati numerici esattamente come negli altri linguaggi:

int

long

float

ma tale fatto viene demandato al programma nel decidere che tipo di dato dovrà contenere quello immesso dall'utente.

Vi è un tipo nuovo in Python che è il tuple che contiene sia stringhe che numeri e spesso per i numeri reali senza la notazione scientifica (ossia 5E3 significa 5 * 10 alla terza) va benissimo.

Sempre in Python vi è un'istruzione che consente al programmatore di capire il tipo di dato inserito dall'utente e questo permette un controllo sul tipo di dato immesso.

Ecco un esempio che spero possa chiarire il concetto:

Listato del programma:

 

a = input("si inserisca un numero intero: ")
b=int(a)
print( type(b))

l'utente inserisce:

5

l'output sarà

<type 'int'>

In pratica dobbiamo definire all'interno di Python il tipo di dato che deve poi elaborare il programma. Se tale fatto non dovesse essere chiarito alcune operazioni con i numeri in notazione scientifica o in notazione decimale non possono avvenire.

Ecco il listato corretto per

 

c = input("si inserisca un numero decimale: ")
d=float(c)
print("Il valore immessi risulta: ",d," di tipo: ",type(d))

In questo caso il valore immesso viene gestito come un numero decimale o in notazione scientifica.

Un tipo di dato tipico di Python è invece il tuple:

t=('ciao',3,4)
print(type(t))

come si osserva esso può contenere oggetti di tipo diverso.

 

 

CONSEGUENZE FONDAMENTALI NEL'AMBITO MATEMATICO:

Se devo eseguire la divisione tra due numeri interi ad esempio 5/6 il resto non è un numero intero ma Python avendo avuto in input due numeri interi pensa che debba dare come risultato un numero intero e nel caso specifico il numero intero più vicino è 1!

Qualcosa non va proprio!

L'unica soluzione è trasformare il numero intero di input in un numero con la virgola (di tipo float) effettuando un passaggio all'interno del programma con una semplice moltiplicazione per 1.0 (numero 1 con uno zero dopo la virgola!)

esempio di listato:

 

a = input("si inserisca un numero: ")
b= input("si inserisca un altro numero: ")
#forzo il cambio di tipo sempre float
a1= float(a)
b1=float(b)
#faccio la divisione con risultato sempre di tipo float
c = a1 / b1
print( c)

A disposizione per tutti gli approfondimenti!

Informazioni su Francesco Bragadin

Insegno informatica e telecomunicazioni al liceo scienze applicate ed all'indirizzo informatica e telecomunicazioni. Ho terminato gli studi in ingegneria elettronica e telecomunicazioni lavorando per molti anni come libero professionista nell'ambito della gestione storage e disaster recovery su mainframe.
Questa voce è stata pubblicata in Uncategorized. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *