Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Esiste un metodo/comando di Python che verifichi l'interezza di un numero?

Auron (15880 points)
52 126 194
in Programmare in Python by (15.9k points)
Faccio un esempio: Effettuo l'operazione di radice quadrata di un numero n... Premetto che ho gia' trovato una scappatoia con le operazioni, ma volevo sapere se esistesse un metodo/comando in python che verificasse se il risultato di una certa operazione/variabile fosse intero o avesse una parte decimale...

Immaginiamo il numero 16: sqrt(16) mi da' 4...
Immaginiamo il numero 2: sqrt(2) mi da' 1,414

Posso sapere con un comando se il risultato presenta una parte decimale o no?

Qualcosa tipo If sqrt(n) is integer... non so se esista,ma e' per chiarificare il concetto :)
6.1k views
closed

4 Answers

Best answer
Stefaniscion (1370 points)
6 15 32
by (1.4k points)
selected by

dando una cercata sul web ho trovato questa

from math import modf
fraz,int = modf(1.23456)
print fraz


separa la parte intera dalla parte decimale
quindi otterresti

fraz=0.23456
int=1


puoi poi porre la condizione

if fraz == 0

per sapere se il numero è intero o decimale

Auron (15880 points)
52 126 194
by (15.9k points)
Potrebbe essere una buona strada da percorrere :D
Ma proprio un metodo?
Lo chiedo perche' se non ricordo male in Visual Basic esisteva
Stefaniscion (1370 points)
6 15 32
by (1.4k points)
Non so, vedo se ti trovo qualcosa ^^
Stefaniscion (1370 points)
6 15 32
by (1.4k points)
Guarda la prima risposta qui
https://stackoverflow.com/questions/21583758/how-to-check-if-a-float-value-is-a-whole-number

Sembra che questo metodo
float.is_integer()
restituisca false de il numero non è intero
Auron (15880 points)
52 126 194
by (15.9k points)
Assegno la miglior risposta a te perché ho visto che sei il primo che mi ha suggerito il metodo is_integer(), grazie è esattamente quello che cercavo :)
restante.giuseppe (2480 points)
7 32 49
by (2.5k points)
edited by
un altro metodo potrebbe essere :
se numero**0.5 == int(numero**0.5):
by (9.9k points)
edited by

Ciao, puoi banalmente verificare che un numero float sia un intero con il metodo is_integer. Quindi, se per esempio vuoi verificare se la radice quadrata di un numero esca un intero, basta fare "if sqrt(2).is_integer(): ..." (altrimenti il contrario).

Maggiori informazioni sul metodo le puoi trovare sulla documentazione ufficiale.

Se invece vuoi sapere non solo se esiste una parte decimale ma anche qual'è, puoi vedere le risposte degli altri colleghi.

francesco.dev (33560 points)
23 51 129
by (33.6k points)
Ciao Auron!
Purtroppo se vuoi sapere la parte decimale, non esiste un modo semplice per prenderla senza appoggiarsi a delle funzioni, funzioni addirittura esterne.

Quindi in Python se vuoi dividere il numero in due parti, una intera ed una decimale, il metodo di Stefano è il migliore!
Ovvero:
from math import modf
frazione, intero = modf(numero)

frazione contiene la parte decimale del numero,
intero invece ne contiene la parte intera.


Se vuoi unicamente controllare che un numero sia intero, ti consiglio di usare:
- La funzione built-in (cosicché non devi richiamare niente) che si chiama isinstance(x, int). Tale funzione ti dà True se la variabile x è del tipo specificato come secondo parametro (in questo caso int), ti darà false se non lo è. Come puoi vedere è molto utile per piccoli controlli!
- Provare semplicemente a controllare se una variabile x è uguale alla sua intera corrispondente, ovvero if x == int(x). Nel caso in cui fossero uguali ti restituirà True!
- Il metodo numero.is_integer() che ti dà True se la variabile numero è un intero, False se non lo è.

Ricorda che i metodi vanno richiamati col punto poiché c'è dietro il concetto di classe, che vedremo in futuro! Invece per le funzioni basta scriverle così come sono.

Sperando di averti aiutato,
- Francesco Pio Scognamiglio