|
Lorsqu’on apprend Python, il peut être un peu compliqué de comprendre la signification des messages d’erreur de Python. Voici une liste de quelques erreurs courantes à l’exécution qui provoquent le plantage de votre programme.
1) J’ai oublié d’ajouter :( à la fin de if, elif, else, for, while, class, définitivement def. L’erreur se produira dans un code comme celui-ci : if spam == 42 print (« Bonjour ! ») 2) Utiliser = au lieu de == (ce qui donne « SyntaxError : syntaxe invalide ») = est l’opérateur d’attribution et == est égal à l’opération de comparaison.L’erreur se produit dans un code comme ceci : si spam = 42 : print (« Bonjour ! ») 3) Utilisation incorrecte de l’indentation. (Résultant en « IndentationError :indentation inattendue », « IndentationError :undentant ne correspond à aucun niveau extérieur d’indentation », et « IndentationError :expected a indented block ») N’oubliez pas que l’indentation n’est utilisée qu’après les énoncés se terminant par : après quoi le format d’indentation doit être revenant au format d’indentation précédent. L’erreur se produit dans un code comme ceci : print (« Bonjour ! ») imprimé (« Salut ! ») Ou: if spam == 42 : print (« Bonjour ! ») imprimé (« Salut ! ») Ou: if spam == 42 : print (« Bonjour ! ») 4) Oublier d’appeler len() dans l’instruction for (ce qui donne « TypeError : l’objet « list » ne peut pas être interprété comme un entier ») En général, on veut itérer sur une liste ou un élément de chaîne à travers un index, ce qui nécessite d’appeler la fonction range(). N’oubliez pas de retourner la valeur len au lieu de retourner cette liste. L’erreur se produit dans un code comme ceci : spam = [« chat », « chien », « souris »] Pour I à portée (spam) : Impression (spam) 5) Essayer de modifier la valeur de la chaîne (ce qui donne « TypeError : l’objet « str » ne supporte pas l’assignation d’éléments ») La chaîne est un type de données immuable, et l’erreur se produit dans des codes comme ceci : spam = « J’ai un chat de compagnie. » spam[13] = « r » Impression (spam) Et vous voulez vraiment faire ceci : spam = « J’ai un chat de compagnie. » spam = spam[ :13] + « r » + spam[14 :] Impression (spam) 6) Essayer de concaténer des valeurs non chaînes avec des chaînes (ce qui donne « TypeError : Ne peut pas convertir implicitement l’objet « int » en str) L’erreur se produit dans un code comme ceci : numŒufs = 12 imprimer (« J’ai " + numŒufs + " œufs. ») Et vous voulez vraiment faire ceci : numŒufs = 12 print (« J’ai " + str(numŒufs) + " œufs. ») Ou: numŒufs = 12 print (« J’ai % œufs. » % (numEggs)) 7) Oublier de mettre des guillemets au début et à la fin de la chaîne (ce qui donne « SyntaxError : EOL lors de la lecture du littéral de la chaîne ») L’erreur se produit dans un code comme ceci :
imprimer(Bonjour !) Ou bien : imprimer("Bonjour !) Ou bien : monNom = « Al » print (« Mon nom est " + monNom + . Comment vas-tu ? ») 8) Mauvaise orthographe des noms de variables ou fonctions (résultant en « NameError : nom « fooba » n’est pas défini) L’erreur se produit dans un code comme ceci : foobar = « Al » imprimé (« Je m’appelle " + fooba) Ou bien : spam = ruond(4.2) Ou bien : spam = Round(4.2) 9) Mauvaise orthographe des noms de méthodes (résultant en « AttributeError : l’objet « str » n’a pas d’attribut « lowerr ») L’erreur se produit dans un code comme ceci : spam = « C’EST EN MINUSCULES. » spam = spam.lowerr() 10) Les références dépassent l’index maximal de la liste (ce qui donne « IndexError : index de liste hors de portée ») L’erreur se produit dans un code comme ceci : spam = [« chat », « chien », « souris »] imprimer(spam[6]) 11) Utiliser une valeur clé de dictionnaire qui n’existe pas (ce qui donne « KeyError : 'spam' ») L’erreur se produit dans un code comme ceci : spam = {"chat » : « Zophie », « chien » : « Basil », « souris » : « Whiskers"} print (« Le nom de mon zèbre de compagnie est " + spam["zebra"]) 12) Essayer d’utiliser un mot-clé Python comme nom de variable (ce qui donne « SyntaxError : syntaxe invalide ») La clé Python ne peut pas être utilisée comme nom de variable, l’erreur se produit dans des codes comme ceci : classe = « algèbre » Les mots-clés de Python3 sont : et, as, assert, break, class, continue, def, del, elif, else, excepte, False, final, for, from, global, if, import, in, is, lambda, Aucun, nonlocal, non, ou, pass, relance, return, C’est vrai, essaie, pendant que tu donnes
13) Utilisation d’opérateurs de valeur ajoutée dans une nouvelle variable définie (ce qui donne « NameError : name « foobar » is not defined ») N’utilisez pas 0 ou chaînes nulles comme valeurs initiales lors de la déclaration des variables, de sorte qu’un spam de phrase += 1 utilisant l’opérateur auto-incrémentant soit égal à spam = spam + 1, ce qui signifie que spam doit spécifier une valeur initiale valide. L’erreur se produit dans un code comme ceci : spam = 0 spam += 42 œufs += 42 14) Utiliser des variables locales dans les fonctions avant de définir des variables locales (dans ce cas, il existe une variable globale portant le même nom que la variable locale) (ce qui donne « UnboundLocalError : variable locale « foobar » référencée avant l’assignation) Il est compliqué d’utiliser une variable locale dans une fonction portant le même nom qu’une variable globale, et les règles d’utilisation sont : si quelque chose est défini dans une fonction, si elle est uniquement utilisée dans la fonction, elle est locale, et inversement. Cela signifie que vous ne pouvez pas l’utiliser dans une fonction comme une variable globale avant de l’avoir définie. L’erreur se produit dans un code comme ceci : someVar = 42 def myFunction() : print (someVar) someVar = 100 myFunction() 15) Essayer de créer une liste d’entiers avec range() (ce qui donne « TypeError : l’objet « range » ne supporte pas l’attribution d’éléments) Parfois, on veut obtenir une liste ordonnée d’entiers, donc range() semble être une bonne façon de générer cette liste. Cependant, il faut se rappeler que range() retourne un « objet range », et non la valeur réelle de la liste. L’erreur se produit dans un code comme ceci : spam = portée(10) spam[4] = -1 Peut-être que c’est ce que vous voulez faire : spam = liste(range(10)) spam[4] = -1 (Note : spam = range(10) fonctionne en Python 2, car dans Python 2 range() renvoie une valeur de liste, mais en Python 3 l’erreur ci-dessus est générée) 16) Nice en ++ ou -- opérateur d’auto-incrémentement. (Résultant en « SyntaxError : syntaxe invalide ») Si vous êtes habitué à d’autres langages comme C++, Java, PHP, etc., vous pouvez essayer d’utiliser ++ ou — incrémenter et soustraire une variable. Il n’existe pas de tel opérateur en Python. L’erreur se produit dans un code comme ceci : spam = 1 Spam++ Peut-être que c’est ce que tu veux faire : spam = 1 spam += 1 17) J’ai oublié d’ajouter le paramètre self au premier argument de la méthode (ce qui donne « TypeError : myMethod() takes no arguments (1 donné) ») L’erreur se produit dans un code comme ceci : classe Foo() : def myMethod() : print (« Bonjour ! ») a = Foo() a.myMethod()
|