Python >> Tutoriel Python >  >> Python

Comment vérifier si une variable est un entier ou non ?

Résumé : Utilisez isinstance(var, int) méthode pour vérifier si une variable est un entier ou non. La méthode vérifie si un objet spécifié est d'un type spécifié ou non. Une autre méthode pour vérifier si la variable est un entier ou non est le is_integer() fonction qui vérifie si une variable flottante donnée contient une valeur entière ou une valeur décimale.

Problème :Étant donné une variable dans un programme ; comment vérifier si c'est un entier ou non ?

Exemple :

def checInt(val):
  #Some function to check if val is an Integer
  
  #if YES:
  return True

  #else
  return False

a = 25
b = 'FINXTER' 
print(checInt(a))
print(checInt(b))

Sortie :

True
False

Ainsi, dans l'exemple ci-dessus, nous devons définir une procédure telle que lorsque nous vérifions si a est un entier alors il renvoie True tandis que pour b il devrait retourner False .

? Avant d'aller plus loin, permettez-moi de vous donner un aperçu des solutions qui sont alignés ensuite. Veuillez consulter le code ci-dessous.

def checInt(val):
  # Method 1
  if (isinstance(val,(int,float)) == True):
    print ("Method 1 Successful!")
  # Method 2
  if (val.is_integer):
    print ("Method 2 Successful!")
  # Method 3
  if (val == round(val)):
    print ("Method 3 Successful!")
  # Method 4
  if (val % 1 == 0):
    print ("Method 4 Successful!")
  
a = 25.0
checInt(a)

Sortie :

Method 1 Successful!
Method 2 Successful!
Method 3 Successful!
Method 4 Successful!

Maintenant, sans plus tarder, discutons des différentes méthodes pour obtenir le résultat souhaité.

Méthode 1 :Utilisation de isinstance(var, int)

isinstance est une méthode intégrée en Python qui renvoie True lorsque l'objet spécifié est une instance du type spécifié, sinon il renvoie False .

Syntaxe :

Exemple :

# Example 1
class Finxter:
  name = "Python"

obj = Finxter()

test = isinstance(obj, Finxter)

print(test)

# Example 2
x = isinstance("Hello Finxter!", (str,float,int))
print(x)

Sortie :

True
True

Maintenant que nous connaissons le isinstance , voyons comment nous pouvons l'utiliser pour vérifier si la variable est entière ou non. Veuillez suivre le programme ci-dessous :

class Finxter(int): pass
x = Finxter(0)

print(isinstance(x, int))

Sortie :

True

Pourquoi nous ne devrions pas utiliser "type" ?

L'utilisation de type pour résoudre notre problème doit être évitée car si vous sous-classez int comme dans l'exemple ci-dessus, type n'enregistrera pas la valeur de la variable comme int. Examinons le morceau de code suivant pour comprendre pourquoi utiliser type n'est pas une bonne option.

class Test(int): pass
x = Test(0)
print(type(x) == int) # False
print(type(x),"is not same as int")

Sortie :

False
<class '__main__.Test'> is not same as int

✍ Une solution de contournement probable pour le problème ci-dessus pourrait être l'utilisation de subclass() qui est une fonction intégrée à Python qui vérifie si une classe/un objet donné est une sous-classe d'une autre classe spécifiée. Voyons cela dans un programme donné ci-dessous :

class Test(int): pass
x = Test(0)
print(issubclass(type(x), int)) 

Sortie :

True

Méthode 2 :Utilisation de var.is_integer()

Un entier représente uniquement une valeur entière (pas de décimale), tandis que float représente des nombres qui peuvent être des nombres entiers comme 25,0 ainsi que des nombres décimaux comme 25,75. On peut donc appeler le is_integer() méthode pour vérifier si le flottant représente un entier.

Jetons un coup d'œil à ce qui suit pour obtenir une image claire.

a = 25.0
b = 25.75
print(a.is_integer())
print(b.is_integer())

Sortie :

True
False

Méthode 3 :Utilisation de round()

Une approche simple pour vérifier si la variable donnée est un entier ou non peut être de vérifier si elle est égale à la valeur lorsqu'elle est arrondie. À cette fin, nous pouvons utiliser le round() intégré méthode en Python qui renvoie l'entier le plus proche lorsqu'aucune valeur n'est transmise au digit facultatif arguments.

Syntaxe :

round(number, digits)
  • number représente le nombre qui doit être arrondi.
  • digits représentent le nombre de décimales à utiliser lors de l'arrondi du nombre.

Regardons le programme suivant pour vérifier si une variable est un entier ou non :

def is_int(value):
  if value == round(value):
    print ('True')
  else:
    print ('False')


a = 25.0
b = 25.75
is_int(a)
is_int(b)

Sortie :

True
False

Méthode 4 :un hack rapide

Voici un hack rapide pour vérifier si la variable donnée est un entier ou non. Tout ce dont nous avons besoin est un simple opérateur modulo comme indiqué ci-dessous.

def is_int(value):
  if value%1 == 0 :
    print ('True')
  else:
    print ('False')

a = 25.0
b = 25.75
is_int(a)
is_int(b)

Sortie :

True
False

Attention : Ceci n'est qu'une solution de contournement rapide et ne doit pas être considéré comme un premier choix lors de la vérification si une variable est un entier ou non.

Méthode 5 :Utilisation de essayer Et sauf Bloquer

Une autre approche de notre problème consiste à utiliser le try et except bloquer. Au lieu de vérifier directement si la valeur est un entier ou non, nous la considérons initialement comme un entier et interceptons l'exception si ce n'est pas le cas. Si cela vous semble déroutant, veuillez consulter le programme ci-dessous qui vous facilitera la tâche.

def is_int(value):
  try:
    return int(value)==value
  except ValueError:
    return False

a = 25.0
b = 25.75
c = "FINXTER"

print(is_int(a))
print(is_int(b))
print(is_int(c))

Sortie :

True
False
False

Méthode 6 :Utilisation de str.isdigit() Méthode

Si vous voulez vérifier si une variable a une valeur de chaîne entière ou non, alors le str.isdigit() méthode peut être très utile. Comme son nom l'indique, str.isdigit() renvoie True si tous les caractères présents dans la chaîne sont des chiffres. Sinon, il renvoie False .

Alerte :

  • Cela ne fonctionne que si la chaîne est une chaîne. Les entiers n'ont pas de isdigit méthode.
  • isdigit() renvoie False pour les entiers négatifs

Maintenant, regardons un exemple fonctionnel du isdigit() méthode pour vérifier si une variable est une chaîne entière ou non.

def is_int(value):
  return str.isdigit(value)

a = "25"
b = "FINXTER"

print(is_int(a))
print(is_int(b))

Sortie :

True
False

Conclusion

Les points clés que nous avons appris dans cet article étaient :

  • Utiliser le isinstance() méthode.
  • Pourquoi type devrait être évitée pour résoudre notre problème.
  • Utiliser le issubclass() méthode.
  • Utiliser le is_integer() méthode.
  • En utilisant la fonction round().
  • Utiliser try et except blocs pour résoudre notre problème.
  • Utiliser le isdigit() méthode.

J'espère qu'après avoir lu cet article, vous pourrez facilement vérifier si une variable est un entier ou non. Veuillez vous abonner et rester à l'écoute pour des articles plus intéressants.