Python : corriger l'erreur TypeError: '<=' not supported between instances of 'str' and 'int'

Le langage Python est un langage de typage dynamique. Un développeur n'est pas obligé de déclarer le type d'une variable. La valeur qu'il lui affecte détermine naturellement le type. D'autres langages utilisent un typage statique, par exemple C#. On ne peut cependant pas tout faire avec ce système et il peut y avoir des erreurs de comparaison de valeurs, comme le signale le message d'erreur "TypeError: '<=' not supported between instances of 'str' and 'int'"

Ce message d'erreur est émis par votre programme si vous utilisez l'opérateur "<=" (inférieur ou égal) pour comparer deux variables et que l'une de ces variables est une chaîne de caractères alors que l'autre est un entier. On ne peut en effet pas comparer ces deux types avec cet opérateur.

a = 0
b = "1"
if (a <= b): //Un message d'erreur sera émis par Python
    print("a est plus petit ou égal = b.")

S'il est facile de se rendre compte d'une erreur avec des variables déclarées, c'est plus compliqué avec des fonctions. Ce message d'erreur peut par exemple apparaître si vous utilisez la fonction "input()". Elle invite l'utilisateur à saisir un élément dans le terminal après lui avoir envoyé un message. Mais même si l'on attend un chiffre, la valeur retournée sera toujours stockée sous la forme d'une chaîne de caractères. Il est donc nécessaire de transformer la chaîne de caractères en un nombre entier. La fonction "int()" le permet justement.

maVariable = input("Veuillez saisir un nombre :")
//Si l'on compare le contenu de maVariable à un entier, on aura un message d'erreur. Il faut la convertir
monEntier = int(maVariable)
if (monEntier <= 10):
    print("Vous avez saisi un nombre inférieur ou égal à 10")
else:
    print("Vous avez saisi un nombre supérieur à 10")

Il faut donc également bien faire attention au retour des fonctions pour ne pas avoir une erreur de comparaison.

Autour du même sujet