Determinare se un numero è un intero o un decimale in Python.
I seguenti casi sono spiegati con codici di esempio.
- Determina se un numero è un intero int o un float in virgola mobile:
isinstance()
- Determina se un numero di tipo float è un intero (0 decimali):
float.is_integer()
- Determina se una stringa di numeri è un intero
Per ottenere i valori interi e decimali di un numero decimale, vedi il seguente articolo.
Vedi il seguente articolo per informazioni su come determinare se una stringa è un numero (inclusi i numeri cinesi, ecc.) piuttosto che se è un intero o un decimale.
Determina se un numero è di tipo intero o a virgola mobile: isinstance()
Il tipo di un oggetto può essere ottenuto con la funzione built-in type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
isinstance(object, type)
Questa funzione integrata può essere usata per determinare se un oggetto è di un tipo particolare. Questo può essere usato per determinare se un numero è di tipo intero o a virgola mobile.
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
In questo caso, giudica solo il tipo, quindi non può giudicare se un valore di tipo float è un intero (con punto decimale 0) o no.
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Determina se un numero di tipo float è un intero (0 decimali): float.is_integer()
Il metodo is_integer() è fornito per il tipo float, che restituisce true se il valore è un intero e false altrimenti.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
Per esempio, una funzione che restituisce vero per un numero intero può essere definita come segue D'altra parte, un tipo di stringa sarebbe falso.
def is_integer_num(n):
if isinstance(n, int):
return True
if isinstance(n, float):
return n.is_integer()
return False
print(is_integer_num(100))
# True
print(is_integer_num(1.23))
# False
print(is_integer_num(100.0))
# True
print(is_integer_num('100'))
# False
Determina se una stringa di numeri è un intero
Se volete determinare che una stringa di cifre intere sia anche un intero, sono possibili le seguenti funzioni.
Per i valori che possono essere convertiti al tipo float con float(), il metodo is_integer() viene applicato dopo la conversione in float e il risultato viene restituito.
def is_integer(n):
try:
float(n)
except ValueError:
return False
else:
return float(n).is_integer()
print(is_integer(100))
# True
print(is_integer(100.0))
# True
print(is_integer(1.23))
# False
print(is_integer('100'))
# True
print(is_integer('100.0'))
# True
print(is_integer('1.23'))
# False
print(is_integer('string'))
# False
Vedi il seguente articolo per i dettagli sulla conversione di stringhe in numeri.
Vedi il seguente articolo per i dettagli su come determinare se una stringa è un numero (inclusi i numeri cinesi, ecc.).