Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les erreurs courantes en Python

Évitons de nous répéter

3 février 2018 à 10:45:47

Bonjour,

tout d'abord, sachez que j'ai parcouru tout le sujet et que j'ai parcouru beaucoup de sujets avant de poster ici.

Voilà, je suis un débutant en python, j'ai décidé de m'y mettre pour m'amuser mais avec l'idée que ça pourrait m'aider dans mon travail. Je me suis donc inscrit à la formation pour débuter en python. J'ai des bases en programmation (Basic et C++) mais c'est loin d'être récent.

Tout allait bien quand je suis arrivé à la partie modularité 1/2.

J'arrive bien à voir ce qu'est une fonction. Mais au moment de prendre l'exemple:

def table_par_7():
    nb = 7
    i = 0
    while i < 0:
        print(i + 1, "x", nb, (i + 1) * nb)
        i += 1

J'obtiens l'obscure message : 
>>>table_par_7()
Traceback (most recent call last):
  Python Shell, prompt 1, line 1
builtins.NameError: name 'table_par_7' is not defined

Je me suis dit que c'était moi qui tapait comme un manche, mais non, même en faisant un copier/coller à partir du cours, ça ne donne rien. Je travaillais jusqu'ici dans le notepad, puis je lançais mes fichiers dans l'IDE, j'ai essayé avec Pycharm, puis Wing IDE, en me disant que peut-être, je faisais un truc de travers.

Comme vous pouvez le voir, je pars de loin. J'avoue que je comprends que le nom de ma fonction est non défini mais je le définie où?

Merci de me répondre et bonne journée pour le moins !

  • Partager sur Facebook
  • Partager sur Twitter
16 avril 2018 à 15:24:54

Bonjour,

Python m'affiche une erreur du type :    File "F:\Table\projet v7B.py", line 50

                                                            def steam():

                                                                ^

                                                         SyntaxError: invalid syntax

Comment puis je faire pour y répondre ?

  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2018 à 15:13:48

WalterWhite17 a écrit:

def table_par_7():
    nb = 7
    i = 0
    while i < 0:
        print(i + 1, "x", nb, (i + 1) * nb)
        i += 1

J'obtiens l'obscure message : 
>>>table_par_7()
Traceback (most recent call last):
  Python Shell, prompt 1, line 1
builtins.NameError: name 'table_par_7' is not defined

Je me suis dit que c'était moi qui tapait comme un manche, mais non, même en faisant un copier/coller à partir du cours, ça ne donne rien. Je travaillais jusqu'ici dans le notepad, puis je lançais mes fichiers dans l'IDE, j'ai essayé avec Pycharm, puis Wing IDE, en me disant que peut-être, je faisais un truc de travers.

Comme vous pouvez le voir, je pars de loin. J'avoue que je comprends que le nom de ma fonction est non défini mais je le définie où?

Merci de me répondre et bonne journée pour le moins !

C'est assez étrange parce que quand je copie-colle la fonction de ton post, ça marche très bien de mon côté. Es-tu sûr d'avoir bien retapé le nom de la fonction lorsque tu l'as appelé ?

alpacinonogeek a écrit:

Bonjour,

Python m'affiche une erreur du type :    File "F:\Table\projet v7B.py", line 50

                                                            def steam():

                                                                ^

                                                         SyntaxError: invalid syntax

Comment puis je faire pour y répondre ?

Une fonction doit forcément contenir quelque chose. Le symbole ^ tout seul ne veut rien dire donc ce n'est pas une syntaxe valide. Si tu veux créer une fonction et la laisser vide pour la reprendre plus tard (par exemple si tu veux attendre d'être sûr de ce que tu veux mettre dedans), tu peux utiliser le mot-clé pass qui ne fait rien. 



-
Edité par Firox 17 avril 2018 à 15:14:07

  • Partager sur Facebook
  • Partager sur Twitter
19 avril 2018 à 13:59:12

Bonjour ,

Moi mon souci c'est que je n'est pas d'exception ( ce qui m'arrangerais ) je n'arrive pas a exécuter ma fonction pourtant simple :

mon module contenant ma classe :

from userCommand import UserEvent


class Menu(UserEvent):
    """
    definie les choix et oriante l'utilisateur
    """
    def __init__(self):

        UserEvent.__init__(self)
        self.user_nb = int()
        self.user_str = str()
        self.select_menu_welcome = {1: "Cartes/save.txt", 2: self.rules_game}

    def welcome(self):
        try:
            print("""*******      Bienvenue        **********

                - Reprendre une partie = 1
                - Nouvelle partie      = 2
                - Regles du jeu        = 3
                    """)
            choice_user = self.select_menu_welcome[self.user_int()]
            return choice_user
        except KeyError:
            print("Ce choix n'est pas disponible")
            self.welcome()
            pass
        except Exception as erreur:
            print(erreur)


Puis mon autre module ou je souhaite exécuter ma fonction :

import menu

menu = menu.Menu()
choice = menu.welcome() # fonction qui ne veut pas s’exécuter mais pas d’exception non plus 

 j'ai tester comme ça aussi pour éviter les confusion

from menu import Menu

plop = Menu()
choice = plop.welcome()




Je sais que plus loin dans le code il peu y avoir des erreur mais le print de welcome() devrais au moins s'afficher

Merci a vous

-
Edité par 64fauchenicolas 19 avril 2018 à 14:08:05

  • Partager sur Facebook
  • Partager sur Twitter
8 juin 2018 à 9:09:53

Bonjour à tous, je suis débutante en programmation, et ne sachant pas encore bien résoudre les erreurs de mon mini programme, pourriez-vous m'aider ?

Et donc le problème est le suivant : lorsque j'exécute mon programme dans la console, un message d'erreur s'affiche à l'écran :

-
Edité par ManonBruni 8 juin 2018 à 9:14:57

  • Partager sur Facebook
  • Partager sur Twitter
8 juin 2018 à 10:23:45

Tu ferais mieux d'ouvrir un sujet pour y poser ta question. Mais le problème vient du fait qu'input retourne une chaîne de caractères que tu essaies de comparer à un nombre, c'est impossible. Il faudrait convertir la chaîne en nombre en faisant appel à int().

  • Partager sur Facebook
  • Partager sur Twitter
8 juin 2018 à 20:06:51

D'accord, merci beaucoup de votre aide !
  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 22:55:01

>>> a = 5
>>> if a > 0: # Si a est positif
...    print("a est positif.")
... if a < 0: # a est négatif
syntaxError: invalid syntax
comment resoudre ????
c'est dans le cours 
  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 23:03:24

Il faut passer une ligne avant le second if, l'exemple du cours est faux / mal présenté.

  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 23:09:34

entwanne a écrit:

Il faut passer une ligne avant le second if, l'exemple du cours est faux / mal présenté.


merci

  • Partager sur Facebook
  • Partager sur Twitter
9 septembre 2018 à 19:01:40

Bonjour je dois faire un petit jeu en python et je ne comprend pas mon erreur dans mon code car ce sont mes première class:

Voilà mon code:

import pygame
import random
import math
from pygame.locals import *
pygame.init()
largeur=1600
hauteur=900
fenetre=pygame.display.set_mode((largeur,hauteur))
class Heros:
    def _init_(self):
        self.image=pygame.image.load("perso.png")
        self.rect=self.image.get_rect()
        self.vie=1000
        self.Mana=100
        self.armure=1/2
        self.attaque=5
        self.vitesse=4
class Petitennemi:
    def _init_(self):
        self.image=pygame.image.load("Ennemi2.png")
        self.rect=self.image.get_rect()
        self.vie=100
        self.vitesse=2
        self.attaque=100
        self.armure=1
class Moyenennemi(pygame.sprite.Sprite):
    def _init_(self):
        self.image=pygame.image.load("Ennemi1.png")
        self.rect=self.image.get_rect()
        self.vie=400
        self.vitesse=3
        self.attaque=100
        self.armure=1
class Boss:
    def _init_(self):
        self.image=pygame.image.load("Boss.png")
        self.rect=self.image.get_rect()
        self.vie=10000
        self.vitesse=0
        self.attaque=2000
        self.armure=1
class Projectile:
    def _init_(self):
        self.image=pygame.image.load("Projectile1.png")
        self.rect=self.image.get_rect()
        self.attaque=1
        self.vitesse=1
        self.portee=1
        self.DoT=0
class viseur:
    def _init_(self):
        self.image=pygame.image.load("Viseur 0.png")
        self.rect=self.image.get_rect()
        self.x,self.y=pygame.mouse.get_pos()
viseur=viseur()
Hero=Heros()
temps=10*[0]
temps[1]=1
Arene=10*[0]
continuer=1
RectArene=10*[0]
Arene[0]=pygame.image.load("Arene1.jpg").convert()
RectArene[0]=Arene[0].get_rect()
framerate= pygame.time.Clock()
RectArene[0].y=-9900
while continuer:
    framerate.tick(60)
    temps[0]+=1
    if temps[0]/60==temps[1] and RectArene[0].y<=0:
        temps[1]+=1
        RectArene[0].y+=20
    fenetre.blit(Arene[0],RectArene[0])
    fenetre.blit(Hero.image,Hero.rect)
    pygame.display.flip()


    
pygame.quit()

Voila mon erreur:

Traceback (most recent call last):

    fenetre.blit(Hero.image,Hero.rect)

AttributeError: 'Heros' object has no attribute 'image'

-
Edité par JérômeMinatchy 9 septembre 2018 à 19:21:21

  • Partager sur Facebook
  • Partager sur Twitter
9 septembre 2018 à 19:08:33

Ce sujet n'est pas destiné aux demandes d'aide.

Mais la méthode d'initialisation d'une classe se nomme __init__ et non _init_.

  • Partager sur Facebook
  • Partager sur Twitter
9 septembre 2018 à 19:10:45

ah ok merci beaucoup je n'aurais surement jamais vu ça mais comme ça je m'en souviendrais a jamais

désolé du mauvais poste je ne savais pas trop quoi faire car c'est ma première fois

-
Edité par JérômeMinatchy 9 septembre 2018 à 19:22:50

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2018 à 22:10:05

bonjour à tous !

Je voudrais de l'aide chers camarades. Quand je lance la commande FLASK_APP=run.py flask shell, je trouve une erreur :

<< FLASK_APP is not recognized as an internal or external command, operable command or batch file.>>

comment y remedier?

Merci de m'aider !

  • Partager sur Facebook
  • Partager sur Twitter
28 octobre 2018 à 0:29:09

Bonjour.

Voilà. J'ai conçu ce petit jeu sur la dichotomie qui recherche un nombre entier entre 0 et 120.

J'ai voulu le faire avec Tkinter.

Il marche mais me renvoie systématiquement un EOF while parsing dans le shell. Je ne trouve pas ou se situe l'erreur.

Merci de votre aide. Voici le code.

import random
from tkinter import *
from tkinter.messagebox import *

devine=random.randint(1,120)

c=1
def jeu(event):
    global c
    while c<9:
        if eval(nbre.get())>devine:
            c=c+1
            showinfo('message',"c'est moins")
            nbre.set('')
        elif eval(nbre.get())<devine:
            c=c+1
            showinfo('message',"c'est plus")
            nbre.set('')
        else:
            showinfo('message',"Bravo c'est gagné !")
            sys.exit()
            fenetre.destroy()
           
    showinfo('message',"C'est perdu")
    sys.exit()
    fenetre.destroy()

#Création de la fenêtre principale
fenetre=Tk()
fenetre.title('Jeu du nombre à deviner')
fenetre.geometry("250x100")
Titre=Label(fenetre, text='entrez le nombre à deviner')
Titre.pack(side=TOP,padx=5,pady=5)


# on valide par la touche entree du clavier:
nbre=StringVar()
saisie=Entry(fenetre, textvariable=nbre)
saisie.bind("<Return>",jeu)
saisie.focus_set()
saisie.pack()

#Pas de bouton pour valider , juste pour  quitter
bouton1=Button(fenetre,text='quitter',command=fenetre.destroy)
bouton1.pack()

fenetre.mainloop()

  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2018 à 13:36:42

Bonjour j'ai une erreur quand je mets une condition en langage Python. Voici en un exemple simple
# début du code
variable_1 = 20
variable_2 = 84
# je mets la condition
if variable_1 > 2:
print("Le nombre égale",variable_1)
 
Juste après le print quand Je tape entrer y'a erreur dans l’interpréteur.
  • Partager sur Facebook
  • Partager sur Twitter

develop my mind !

28 novembre 2018 à 13:53:51

Bonjour ! (Tu aurais dû ouvrir un sujet plutôt que d'utiliser celui-ci. Mais bon, ça va aller vite.) Peux-tu préciser quel message d'erreur indique l'interpréteur ? Qu'en penses-tu ? Ne suffit-il pas de le lire pour comprendre et rectifier ?

  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2018 à 13:57:07

Merci d'abord de me répond je fais une capture
  • Partager sur Facebook
  • Partager sur Twitter

develop my mind !

28 novembre 2018 à 14:12:46

Si le code est tel que tu le présentes, il y a une erreur d'indentation : la ligne 6 doit être décalée pour faire partie du bloc conditionnel.

  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2018 à 16:16:32

bonjour dans le cours de "if" il est dit sur la video de faire 2 espaces à la suite de la condition et dans le texte dessous de faire 4 espaces, les deux sont ils bons ?
  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2018 à 16:29:29

Techniquement les deux solutions fonctionneront, mais 4 espaces sont préférables, c'est ce qui est recommandé par la PEP8.

Le cours parlait initialement de 2 espaces et l'erreur leur a été remonté, donc ils ont corrigé dans le texte. Mais le gros problème des cours vidéo (et la raison pour laquelle il faudrait les éviter) c'est que c'est très difficile à corriger, donc la vidéo reste trompeuse.

  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2019 à 23:40:53

bonsoir, cooment afficher un tableau de n ligne n dimension avec pygame ? merci
  • Partager sur Facebook
  • Partager sur Twitter
4 janvier 2019 à 21:55:39

Bonjour / bonsoir à tous ,

Je suis débutant en Python et j'ai un problème stupide auquel je ne trouve pas de solution.

Voici un bout de mon code : 

bin1 = a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4,b4,c4,d4,e4,f4,g4,h4

bin2 = a5,b5,c5,d5,e5,f5,g5,h5,a6,b6,c6,d6,e6,f6,g6,h6,a7,b7,c7,d7,e7,f7,g7,h7,a8,b8,c8,d8,e8,f8,g8,h8



(a1 , b1 , c1 etc... étant des 0 ou des 1) 

J 'ai donc en sortie , par exemple (avec les espaces) :

0 0 0 1 0 1 0 0

1 1 1 0 0 0 0 0 

Néanmoins , j'aimerai que ces nombres binaires soient écrits sous la forme 00010100 et 1110000 sans espaces pour que je puisse les utiliser un peu plus bas dans mon programme pour les reconvertir en décimal (exercice consistant à comparer une adresse ip et un masque de sous réseau pour obtenir une adresse de sous réseau de l'hôte)

J'ai essayé .replace et .rstrip mais message d'erreur. 

Merci beaucoup de votre aide et du temps accordé.

  • Partager sur Facebook
  • Partager sur Twitter
4 janvier 2019 à 23:21:18

Pourquoi les définir sous la forme de tuples si ce n'est pas sous cette forme que tu veux les utiliser ?

  • Partager sur Facebook
  • Partager sur Twitter
4 janvier 2019 à 23:30:31

entwanne a écrit:

Pourquoi les définir sous la forme de tuples si ce n'est pas sous cette forme que tu veux les utiliser ?


Comment dois-je les définir alors ? 

Plus haut dans mon programme j'ai :

if Adip1a[0] == Masquea[0] :
    a1=1
else :
    a1=0

Je l'ai écrit de cette manière afin de les "stocker" quelque part sans les afficher et le manipuler plus tard , y'a-t-il une autre solution ? 

Merci beaucoup

  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2019 à 0:55:54

entwanne a écrit:

bin1 = 0b00010100
bin2 = 0b11100000

J'ai finalement trouvé solution à mon problème mais une erreur de syntaxe apparaît , savez vous où se trouve-t-elle ? 

print("L'adresse de sous réseau de l'hôte 1 est"(int(convbin(binf1a),2))"."(int(convbin(binf1b),2))"."(int(convbin(binf1c),2))"."(int(convbin(binf1d),2))")



  • Partager sur Facebook
  • Partager sur Twitter
6 janvier 2019 à 20:18:01

Tu ne peux pas coller des str et des int comme ça.

Essaye plutôt :

print("L'adresse de sous réseau de l'hôte 1 est %s.%s.%s.%s" % (int(convbin(binf1a),2), int(convbin(binf1b),2), int(convbin(binf1c),2), int(convbin(binf1d),2)))



  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2019 à 16:10:21

AssiEcclésiasteXavier a écrit:

Bonjour j'ai une erreur quand je mets une condition en langage Python. Voici en un exemple simple

# début du code
variable_1 = 20
variable_2 = 84
# je mets la condition
if variable_1 > 2:
print("Le nombre égale",variable_1)
 

Juste après le print quand Je tape entrer y'a erreur dans l’interpréteur.

C'est l'indentation qui manque sur ta dernière ligne de code.

  • Partager sur Facebook
  • Partager sur Twitter
7 février 2019 à 12:34:53

Bonjour, 
je tente depuis quelques jour de créer un serveur http avec python, mais lorsque je le lance, j obtient l'erreur suivante : 
<code>Traceback (most recent call last):
  File "http-server.py", line 12, in <module>
    httpd = server(address, handler)
  File "C:\Users\Robin\AppData\Local\Programs\Python\Python36\lib\socketserver.py", line 456, in __init__
    self.server_bind()
  File "C:\Users\Robin\AppData\Local\Programs\Python\Python36\lib\http\server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "C:\Users\Robin\AppData\Local\Programs\Python\Python36\lib\socketserver.py", line 470, in server_bind
    self.socket.bind(self.server_address)
OSError: [WinError 10013] Une tentative d’accès à un socket de manière interdite par ses autorisations d’accès a été tentée</code>
Mon code est le suivant :
<code>#coding:utf-8
import http.server
port = 80
address = ("", port)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/"]
httpd = server(address, handler)
print ("Serveur demarre sur le port", port)
httpd.serve_forever()</code>
Comment faire ? Merci d'avance pour vos réponses
  • Partager sur Facebook
  • Partager sur Twitter