Maison >développement back-end >Tutoriel Python >Introduction détaillée à python3.x
Ce livre sur l'apprentissage automatique est écrit dans l'environnement de python2.x, et de nombreuses fonctions de python3.x ont des noms ou des méthodes d'utilisation différents de ceux de 2.x, donc le contenu du livre original doit être corrigé, parlons brièvement enregistrez la partie corrigée pendant le processus d'apprentissage
1. Des parenthèses doivent être ajoutées après la fonction d'impression (la fonction d'impression commence à apparaître dans la liste de programmes 2-4)
2. pour saisir la fonction, en 3.
4.
dans le listing de programmes 3-6
Dans python2.7, recherchez le premier élément correspondant à la clé : firstStr = myTree. keys() [0], cela signalera une erreur lors de l'exécution dans python3.4 : l'objet 'dict_keys' ne prend pas en charge l'indexation. En effet, python3 a modifié dict.keys et a renvoyé l'objet dict_keys, qui prend en charge l'itérable mais ne prend pas en charge l'indexation. . Nous pouvons le changer Si elle est explicitement convertie en liste, cette fonction doit être implémentée dans python3 comme suit :
5 Liste de programmes 3-9pickle utilise le binaire lors de la persistance des données. La méthode est utilisée pour stocker et lire, donc lors de l'écriture d'un fichier,firstSides = list(myTree.keys()) firstStr = firstSides[0]#找到输入的第一个元素
fw=open(filename,'w')---->fw=open(filename,'wb')
Ouvrez le fichier sous forme binaire pour faciliter l'écriture des cornichons
Lors de la lecture des données du fichier, vous devez également le lire sous forme binaire et apporter les modifications suivantes
fr= open(filename )---->fr=open(filename,'rb')
6.
wordList =textParse(open('ch04/email/ham/%d.txt' % i).read())Cette phrase signale toujours une erreur d'encodage lors de l'exécution, et le résultat est lu Il y a des caractères tronqués dans le fichier. Après avoir supprimé les caractères tronqués, le problème est résolu Le code d'erreur est le suivant : UnicodeDecodeError : le codec 'gbk' ne peut pas décoder l'octet 0xae en position 199 : illégal. séquence multi-octets trainingSet=range(50);del(trainingSet[randIndex])Puisque la plage ne peut pas renvoyer la liste et ne prend pas en charge la suppression opération, le message suivant apparaît pendant l'exécution Erreur : TypeError : l'objet 'range' ne prend pas en charge la suppression d'élémentVous pouvez modifier le code comme suit : trainingSet = list( range(50)); à suivre……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!