Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les erreurs courantes en Python

Évitons de nous répéter

16 juillet 2019 à 11:26:16

Bonjour, 

N'hésitez pas à supprimer ce message si il n'est pas à sa place, je n'ai trouve que votre topic en français

Vous pouvez me considérez comme l'ultime Noob, je suis bloqué simplement à l'installation, j'ai tenté de suivre ce tuto pas bien compliqué : https://www.scrapehero.com/how-to-install-python3-in-windows-10/

Mais à la première command au lieu trouver le résultat indiqué, j'ai ceci : PS C:\Users\EL QUALI> python

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> pyton --version

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'pyton' is not defined

Le pire c'est que je souhaite seulement l'installer pour faire marcher un plug-in sur sublime Text, du nom de CodeIntel .

En tout cas je remercie l'âme charitable qui pourrait bien m'éclairer .

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 11:51:09

- On écrit python, pas pyton

- La commande python --version on la tape dans la console windows, pas dans l’interpréteur python.

- Pour installer un module comme codeintel, en principe on tape, dans la console windows, "python -m pip install codeintel"

-
Edité par thelinekioubeur 16 juillet 2019 à 11:51:16

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 12:40:14

Bonjour et merci thelinekioubeur , ce conseil m'aidera dans beaucoup d'autre installations j'en suis sur =)  ( effectivement j'écrivais le module directement dans python et pas la console windows ) 

Je pense que j'ai presque réussi à installer, je suis bloqué ici : **Without Git:** Download the latest source from GitHub and copy the whole directory into the Packages directory.

Je vais sur le lien en  question mais je ne comprends pas du tout ce que je dois copier, comment, et ou le coller .

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 13:10:14

Va sur le bouton vert "Clone or download" et choisis "Donwload ZIP".

Où le coller ? Je n'utilise pas SublimeText mais dans les répertoires où il est installé, tu dois probablement avoir un répertoire Packages. C'est là !

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 14:57:52

Bonjour Zachee54, merci pour votre réponse, j'ai bien donwload le fichcier ZIP et placer au bon endroit ( il me semble ) 

Puis j'ai restart Sublime text mais cela ne marche toujours pas, je ne vois pas ce qu'il manque..

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 15:31:05

La page d'accueil du projet sur GitHub dit d'aller voir dans Preferences -> Browse packages... pour connaître l'emplacement du répertoire Packages.
Des fois que celui que tu as trouvé ne soit pas le bon...

Mais d'aun autre côté, tous les fichiers qui se trouvent à côté du répertoire SublimeCodeIntel-master que tu désignes sont déjà les fichiers de SublimeCodeIntel. Donc ils sont à la fois dans le répertoire SublimeCodeIntel-master et à côté... quelle est la bonne pratique ?

Autre chose : la page GitHub dit qu'il faut déjà avoir installé CodeIntel. Tu l'as ?

À part ça je ne peux pas trop t'aider puisque je n'utilise pas le même éditeur.

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 15:43:26

Tu n'as pas besoin de télécharger des machins.

Dans sublime-text tu fais Ctrl+Maj+P et tu choisis "install package control" et tu attends que l'installation se termine (quelques secondes).

Ensuite tu refais Ctrl+Maj+P, tu choisis "Package control : install package" puis tu cherches "codeintel".

-
Edité par thelinekioubeur 16 juillet 2019 à 15:46:46

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 15:46:01

thelinekioubeur OUi c'est ce que j'ai fait à la base, cela marche pour tout les packages mais pas pour celui-la je ne sais pas pourquoi; 

Normalement quand je fais clic droit sur un mot et 'jump to symbol definition' c'est sensé marché mais rien ne se passe, aussi je devrais avoir des propositions automatisés à certains moments, bref je suis sur d'une chose c'est qu'il ne fonctionne pas .

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 16:07:06

Si tu as "jump  truc" c'est que le plugin est bien installé. Ça ne sert à rien d'essayer de l'installer autrement.

Soit il manque un truc à configurer "Voir dans Preferences>Package Settings" soit tu ne sais pas t'en servir.

  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2019 à 17:01:19

Je pense que tu as raison, je devrais peut-être essayer de configurer les settings ( ce qui signifie que je ne sais pas m'en servir .. )
  • Partager sur Facebook
  • Partager sur Twitter
16 septembre 2019 à 18:50:00 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


16 septembre 2019 à 20:01:19

Utilise le bouton </> pour mettre ton code, là c'est illisible.

Et il manque visiblement un if à la dernière ligne.

  • Partager sur Facebook
  • Partager sur Twitter
12 octobre 2019 à 11:01:09 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


12 octobre 2019 à 12:09:05

La fonction input renvoie un objet de type str (chaîne de caractères) qu'il te faut convertir en nombre (int) si tu veux l'utiliser comme tel : a = int(intput('de nucleons:')).

  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2019 à 18:26:50 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


26 octobre 2019 à 18:46:01

Bonjour,

Je suis en train de suivre une formation Python et je débute à peine.

Je commence à écrire mes fonctions sur PyCharm et à les importer sur jupyter pour travailler plus proprement. J'essaye au maximum de découper mes fonctions et mon travail en modules bien distincts.

Le souci c'est que je viens juste de commencer à travailler de cette manière et que je suis bloquée... dès l'ouverture de mon fichier.

J'ai créé une fonction visant à ouvrir mon fichier:

def ouvrir_fichier():
valeursfoncieres = pd.read_csv('valeursfoncieres-2018.txt', sep = '|', encoding = 'utf-8')
return valeursfoncieres

Cela fonctionne très bien, Jupyter me renvoie bien le tableau mais le souci c'est que ma variable "valeursfoncieres" à laquelle je fais référence dans toutes les fonctions qui suivent se situe à l'intérieur de cette fonction, et quand j'exécute les fonctions suivantes Python me renvoie un message d'erreur expliquant que la variable "valeursfoncieres" n'est pas définie...


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-08472fe54c70> in <module>
----> 1sampler.valeursfoncieres
 

AttributeError: module 'sampler' has no attribute 'valeursfoncieres'Le problème c'est que je ne dois fonctionner qu'avec des modules contenant des fonctions bien spécifiques, dont la fonction qui ouvre le fichier... J'ai vu qu'il existait le concept de variable globale mais cela ne me semble pas idéal pour le cas de cette variable.

Si jamais vous pouvez m'éclairer !

Merci pour votre aide :)

Marine

  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2019 à 11:06:48

Il faut définir ta variable aux endroits où tu l'utilises, au moment où tu appelles ta fonction ouvrir_fichier :

def ouvrir_fichier():
    return pd.read_csv('valeursfoncieres-2018.txt', sep = '|', encoding = 'utf-8')

def mafonction1():
    valeursfoncieres = ouvrir_fichier()
    print(valeursfoncieres)

def mafonction2():
    valeursfoncieres = ouvrir_fichier()
    faire_autre_chose_avec_mes_valeurs_foncieres(valeursfoncieres)

def mafonction3():
    faire_encore_autre_chose(ouvrir_fichier())

Évite d'utiliser une variable globale si ce n'est pas nécessaire.
Or ici, c'est peut-être nécessaire (!) pour éviter que le fichier ne soit ouvert plusieurs fois. À chaque fois que tu appelles ouvrir_fichier, Pandas relit le fichier CSV depuis le disque dur. En stockant le résultat dans une variable globale, tu lis les données une fois pour toutes et tu t'en sers où tu veux, autant de fois que tu veux.

Au passage, tu vois que j'ai simplifié ta fonction ouvrir_fichier() parce qu'il est inutile d'affecter ta variable si c'est pour la renvoyer juste après sans avoir travaillé dessus.

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2019 à 11:30:27

Merci beaucoup Zachee54 c'est très clair ! :)

Marine

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2019 à 13:25:42 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


1 novembre 2019 à 15:53:45

Bonjour!

J'ai crée un script python qui Affiche les fichiers d'un répertoire, et je voudrais qu'après avoir aficher qu'il me copie l'ensemble de ces fichiers et le mettre dans un fichier texte...

si quelqu'un peut m'aider, s'il vous plait.

-
Edité par DriverqueMakengo 1 novembre 2019 à 16:08:15

  • Partager sur Facebook
  • Partager sur Twitter
1 novembre 2019 à 19:49:49

Pour mettre plusieurs fichiers textes en un seul :

txt_files = ["fichier1.txt", "fichier2.txt"]
with open("out.txt", "w") as out:
    for txt_file in txt_files:
        with open(txt_file) as file:
            out.write(file.read())



  • Partager sur Facebook
  • Partager sur Twitter
12 novembre 2019 à 16:56:44

Faire au plus simple qui soit va sur le site officiel de python https://www.python.org/downloads/ après le téléchargement clic sur l’exécutable puis suit les instructions.
  • Partager sur Facebook
  • Partager sur Twitter

develop my mind !

22 novembre 2019 à 14:37:36

Bonjour, comment se fait-il qu'il n'y ai pas un bouton "nouveau message" au lieu de m'obliger à répondre dans un topic qui me concerne pas ?

J'ai un problème est en python.

Si quelqu'un pouvait me conseiller ce serait cool ;)

j'ai le message : IndexError: string index out of range

Sur la ligne : car=saisie[p]

def letrio(saisie):
    trio=""
    p=0
    while(p<3):
        car=saisie[p]
        if car!=" ":
            trio+=car
        else :
            p=0
            break
        p+=1
    return trio

phrase=saisie.split() # phrase sera un tableau contenant chaque mot de la phrase saisie.
m=0
while(m<len(phrase)-1): # parcourt du tableau phrase.
    xxx=letrio(phrase[m]) # extrait les 3 premiers caractères d'un mot du tableau phrase.Le trio sera soit 3 caractères, soit une lettre 

appostrophée, soit une lettre seule.
        chaine=dico[xxx] # Si le trio est dans le dictionnaire, sa description est mise dans la variable chaine pour être affichée.
        print(chaine)

m+=1



-
Edité par BozoUntel 22 novembre 2019 à 14:41:16

  • Partager sur Facebook
  • Partager sur Twitter
Abou
22 novembre 2019 à 14:41:36

phrase[m] est un string de taille 1, donc la variable saisie ne contient qu'un seul caractère.

Aussi, pour prendre 3 caractères dans un string, tu peux faire ceci :

>>> phrase = "Hello World!"
>>> phrase[6:9]
'Wor'



-
Edité par thelinekioubeur 22 novembre 2019 à 14:43:08

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2019 à 14:52:52

Je te remercie beaucoup thelinekioubeur !

Le problème c'est que je teste caractère par caractère exprès parce que la phrase peut commencer par "à" ou "le" ou "table" etc donc je veux pouvoir sélectionner de 1 à 3 caractères selon ce qu'il y a, mais ce code fonctionnait seul avant que je le mette dans le while :/

m varie de 0 à 2 donc 3 caractères de la saisie.

Le -1 dans le while, je l'ai mis car j'avais le message d'erreur, mais c'est pareil :/

Ce que je veux faire :

Si la phrase est :

à toi de jouer ----> à

le jeu est à moi----> le

c'est mon tour-----> c'   (je l'ai pas encore implémenté)

parle-moi------------> par

==================================================


Le même problème si j'écris que ça :

saisie=input("entrez une phrase ;)")



def letrio(saisie):

    trio=""

    p=0

    while(p<3):

        car=saisie[p]

        if car!=" ":

            trio+=car

        else :

            p=0

            break

        p+=1

    return trio



xxx=letrio(saisie) # extrait les 3 premiers caractères d'un mot du tableau phrase.Le trio sera soit 3 caractères, soit une lettre appostrophée, soit une lettre seule.

print(xxx)
Je comprend pas parce qu'au début il fonctionnait bien.
==========================================================

Bon merci, j'ai fini par trouver : P dépassait la fin de la chaine qui est dans "saisie". Donc j'ai ajouté 

if p<len(saisie)

-
Edité par BozoUntel 22 novembre 2019 à 17:31:59

  • Partager sur Facebook
  • Partager sur Twitter
Abou
22 novembre 2019 à 17:38:28

Le problème est que tu ne connais pas la longueur de la variable \(saisie\) dans letrio. Elle peut très bien avoir moins de 3 caractères, donc tu auras un problème en faisant varier \(p\) de 0 à 2.

Il faudrait plutôt faire :

for p in range( min(3,len(saisie)) ):
  car = saisie[p]

Mais j'ajouterais que de toute façon, ce que tu fais avec ta variable car ne sert à rien. Elle ne peut jamais correspondre à une espace, puisque tu as fait un split() sur les données avant de les traiter.
Autant récupérer directement les 3 premières lettres de \(saisie\), ou moins que ça si \(saisie\) fait moins de 3 caractères.

  • Partager sur Facebook
  • Partager sur Twitter
24 novembre 2019 à 19:45:43

salut j'ai eu une erreur mais elle n'est pas référé ci-dessus pouvez vous m'expliquez le problème ?


Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not callable

(ps: je suis sur edupython (PyScripter)

  • Partager sur Facebook
  • Partager sur Twitter
24 novembre 2019 à 22:37:52

Sans le code c'est difficile de t'indiquer l'erreur exacte, mais tu essaies d'utiliser un nombre comme une fonction. Peut-être as-tu redéfini un nom de fonction existante pour le faire pointer sur un nombre ?

  • Partager sur Facebook
  • Partager sur Twitter
25 novembre 2019 à 12:33:08

BONJOUR

J'ai téléchargé  Anaconda (version 3.7) sur mon ordinateur qui fonction sous Windows 7 32bits, puis j'ai ouvert le fichier pour lancer l'installation qui s'est déroulée normalement à l'exception d'un messages d'erreur qui est apparus à la fin:

Failed to create Anaconda menus

En plus de ça à la fin de l'installation je ne trouve plus l'icone d'anaconda.

Pourriez-vous me fournir quelques informations sur la démarche à suivre pour prévenir ou réparer ces erreurs.

  • Partager sur Facebook
  • Partager sur Twitter
25 novembre 2019 à 23:22:46

Salut zachee ;) Et tous ;)

J'avais écris que mon problème était résolu ;)

Mais je vais répondre quand même pour certains truc, par exemple zachee, tu dis que j'ai fait un split et que je devrais l'utiliser, oui c'est sûr en théorie, mais là mon but est de véritablement détecter soit les lettres avec apostrophe, les espaces entre les mots et le cas d'une seule lettre, et mon code fonctionne super ainsi que je l'ai fait, par contre le split je l'utilise après pour prendre les mots complets même s'ils se réduisent à une lettre, comme "à" ou à deux comme "le".

Enfin voilà, ça marche, mon code m'a été très utile et je suis content, merci de ton aide en tous cas zachee, j'ai apprécié ;)

Shyrro :

TypeError: 'int' object is not callable

python te dit que le INT n'est pas appelable, tu dois certainement le référencer quelque part, alors qu'il ne faut pas, et python t'indique la ligne où ça se passe.

C'est ce que t'as dit Antwanne :)

 tu essaies d'utiliser un nombre comme une fonction. Peut-être

Ce forum est vraiment abandonné par les techniciens du site, c'est dommage, la zone d'édition déconne vraiment à fond.

Je pense que je vais faire un site pour d'aide aux débutants demain, parce que classroom est devenu professionnel maintenant et je les comprend, il faut bien vivre quand même ;)

En tous cas, vive les zéro !

Hindkay : Désinstalle par le panneau de config puis installe de nouveau, c'est la meilleure solution.







-
Edité par BozoUntel 25 novembre 2019 à 23:33:19

  • Partager sur Facebook
  • Partager sur Twitter
Abou