J'ai récemment appris Python, et maintenant je résume quelques erreurs courantes comme suit :
1) J'ai oublié de mettre à la fin de if , elif , else , for , while , class , instruction def Ajouté : (provoquant "SyntaxError : syntaxe invalide") Cette erreur se produira dans un code similaire à :
if spam == 42 print('Hello!')
2) Utilisez = au lieu de == (provoquant "SyntaxError : syntaxe invalide) ") = est un opérateur d'affectation et == est une opération de comparaison égale. Cette erreur se produit dans le code suivant :
if spam = 42: print('Hello!')
3) Utilisation incorrecte de l'indentation. (résultant en "IndentationError : indentation inattendue", "IndentationError : unindent ne correspond à aucun niveau d'indentation externe" et "IndentationError : un bloc indenté attendu") N'oubliez pas que l'augmentation de l'indentation n'est utilisée qu'après les instructions se terminant par : et doit être restaurée. puis au format d'indentation précédent. Cette erreur se produit dans le code suivant :
print('Hello!') print('Howdy!')
ou :
if spam == 42: print('Hello!') print('Howdy!')
ou :
if spam == 42: print('Hello!')
4) J'ai oublié d'appeler len (dans la boucle for instruction ) (résultant en "TypeError: l'objet 'list' ne peut pas être interprété comme un entier") Habituellement, vous souhaitez parcourir les éléments d'une liste ou d'une chaîne par index, ce qui nécessite d'appeler la fonction range(). N'oubliez pas de renvoyer la valeur len au lieu de la liste. L'erreur se produit dans le code suivant :
spam = ['cat', 'dog', 'mouse'] for i in range(spam): print(spam[i])
5) Essayez de modifier la valeur de la chaîne (ce qui entraîne "TypeError : l'objet 'str' ne prend pas en charge l'affectation d'élément"). La chaîne est un type de données immuable, L'erreur se produit dans un code comme :
spam = 'I have a pet cat.' spam[13] = 'r' print(spam)
lorsque vous souhaitez réellement faire ceci :
spam = 'I have a pet cat.' spam = spam[:13] + 'r' + spam[14:] print(spam)
6) Essayez de concaténer une valeur autre qu'une chaîne avec une chaîne (ce qui donne "TypeError : Impossible de convertir implicitement l'objet 'int' en str") Cette erreur se produit dans un code tel que :
numEggs = 12 print('I have ' + numEggs + ' eggs.')
lorsque vous souhaitez réellement faire ceci :
numEggs = 12 print('I have ' + str(numEggs) + ' eggs.')
ou :
numEggs = 12 print('I have %s eggs.' % (numEggs))
7) J'ai oublié d'ajouter des guillemets au début et à la fin de la chaîne (ce qui entraîne "SyntaxError: EOL while scanning string literal") Cette erreur se produit dans le code suivant :
print(Hello!') 或者: print('Hello!)
ou :
myName = 'Al' print('My name is ' + myName + . How are you?')
8) Erreur d'orthographe du nom de variable ou de fonction (entraînant "NameError : le nom 'fooba' n'est pas défini") Cette erreur se produit dans le code suivant :
foobar = 'Al' print('My name is ' + fooba) 或者: spam = ruond(4.2) 或者: spam = Round(4.2)
9) Nom de la méthode, faute de frappe hors plage") Cette erreur se produit dans le code suivant :
spam = 'THIS IS IN LOWERCASE.' spam = spam.lowerr()
11) Utilisation d'une valeur de clé de dictionnaire inexistante (résultant en "KeyError: 'spam' ") Cette erreur se produit dans le code suivant :
spam = ['cat', 'dog', 'mouse'] print(spam[6])
12) Si vous essayez d'utiliser des mots-clés Python comme noms de variables (ce qui entraîne "SyntaxError : syntaxe invalide"), les mots-clés Python ne peuvent pas être utilisés comme noms de variables, l'erreur se produit dans un code comme :
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} print('The name of my pet zebra is ' + spam['zebra'])
Les mots-clés de Python3 sont : et, as, assert, break, class, continue, def, del, elif, else, except, False, enfin, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, return
class = 'algebra'
14) Utilisez des variables locales dans les fonctions avant de définir des variables locales (à ce stade, 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'affectation") Il est très compliqué d'utiliser une variable locale dans une fonction et il existe une variable globale du même nom. La règle générale est la suivante : si quelque chose est défini dans la fonction, si elle n'est utilisée que dans la fonction Elle est locale, sinon c'est une variable globale. Cela signifie que vous ne pouvez pas l'utiliser comme variable globale dans une fonction avant de la définir. L'erreur se produit dans le code suivant :
spam = 0 spam += 42 eggs += 42
15) Essayer d'utiliser range() pour créer une liste d'entiers (résultant en "TypeError : l'objet 'range' ne prend pas en charge l'affectation d'éléments") Parfois, vous Je veux obtenir une liste avec une liste ordonnée d'entiers, donc range() semble être un bon moyen de générer cette liste. Cependant, vous devez vous rappeler que range() renvoie un « objet plage », et non la valeur réelle de la liste. L'erreur se produit dans le code suivant :
someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction()
C'est peut-être ce que vous voulez faire :
spam = range(10) spam[4] = -1
(Remarque : dans Python 2, spam = range(10) fonctionne Oui, car range() dans Python 2 renvoie une valeur de liste, mais dans Python 3 l'erreur ci-dessus se produira)
spam = list(range(10)) spam[4] = -1
C'est peut-être ce que vous voulez faire :
spam = 1 spam += 1
17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”) 该错误发生在如下代码中:
class Foo(): def myMethod(): print('Hello!') a = Foo() a.myMethod()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!