Partage
  • Partager sur Facebook
  • Partager sur Twitter

Import module ne fonctionne pas

Sujet résolu
    26 janvier 2020 à 19:44:22

    Bonjour à tous,

    J'ai créé un module dans un fichier qui s'appelle secondaire que voici:

    import os
    
    def aire_rectangle(longueur,largeur):
        print(longueur*largeur)
    
    def surface_rectangle(longueur,largeur):
        print(2*(longueur+largeur))
    
    if __name__ == '__main__':
                aire_rectangle(5,3)
                surface_rectangle(6,3)
                os.system ("pause")


    Rien d'extraordinaire...je suis en phase d'ingurgitation du cours débutant pour Python :)

    Le but est d'appeler ce module (intégralement) dans un second fichier qui s'appelle primaire

    primaire et secondaire sont tous les deux dans le même dossier enregistré sur mon bureau

    Version Python: 3.8.1

    Quand j'utilise

    import


     j'ai ce message d'erreur:

    >>> import secondaire
    >>> aire_rectangle(1,3)
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        aire_rectangle(1,3)
    NameError: name 'aire_rectangle' is not defined
    >>> 

    Le message d'erreur apparaît également avec la seconde fonction surface_rectangle :

    >>> import secondaire
    >>> surface_rectangle (1,3)
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        surface_rectangle (1,3)
    NameError: name 'surface_rectangle' is not defined
    >>> 

    Pourtant si j'utilise 

    from secondaire import *

    ou si j'appelle individuellement chacune des fonctions, cela fonctionne. A titre d'exemple:

    >>> from secondaire import *
    >>> surface_rectangle(1,5)
    12
    >>> 
    >>> from secondaire import aire_rectangle
    >>> aire_rectangle(1,3)
    3
    >>> 



    Pourriez vous m'indiquer ,éventuellement, mon erreur ou pourquoi deux méthodes fonctionnent mais pas la troisième. A votre disposition pour tous renseignements complémentaires

    Merci d'avance

    Bien cordialement



    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2020 à 20:19:04

      Il faut faire comme ça :

      import secondaire
      secondaire.aire_rectangle(1, 3)


      Si le nom du module est trop long, on peut donner un alias au module pour le raccourcir :

      import secondaire as scnd
      scnd.aire_rectangle(1, 3)
      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        27 janvier 2020 à 7:55:45

        Merci pour le retour rapide....grand blond !
        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2020 à 16:30:41

          Bonjour à tous,

          J'ai le programme ci-dessous pour lequel j'ai une petite question:

          def eleMax(lst, debut =0, fin =-1):
          "renvoie le plus grand élément de la liste lst"
               if fin == -1:
                   fin = len(lst)
               max, i = 0, 0
               while i < len(lst):
                   if i >= debut and i <= fin and lst[i] > max:
                       max = lst[i]
                   i = i + 1
               return max 

          Ligne 7:

          if i >= debut and i <= fin and lst[i] > max:

          Puisque un signe <= est utilisé, ne faut il pas ligne 4, indiqué fin = len(lst) -1 pour indiquer que l'indice i peut prendre toutes les valeurs entre 0 et le dernier de la chaîne de caractère? Par ailleurs la boucle précise bien pour tout i strictement inférieur à len(lst), comment dans ce cas pourrions nous avons i = fin = len(lst)?

          Merci d'avance pour votre éclairage.

          Bien cordialement

          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2020 à 16:48:18

            Ce bout de code est inutilement compliqué, mais oui, il me semble que tu as raison.

            Si tu veux voir le déroulement du programme, tu peux ajouter des print dans le code pour afficher les valeurs qui t'intéressent, c'est une méthode de debug basique mais très utile.

            Vu qu'il y a déjà la condition du while pour stopper la boucle arrivé en fin de liste, la condition du if peut être simplifiée à "if lst[i] > max".

            -
            Edité par LoupSolitaire 1 mars 2020 à 16:49:30

            • Partager sur Facebook
            • Partager sur Twitter

            Blond, bouclé, toujours le sourire aux lèvres...

              1 mars 2020 à 17:47:35

              Merci LoupSolitaire.

              Effectivement le code est "tordu", mais c'est un exercice pour débutant donc limite en termes de connaissances.

              Pour ton information voilà l'énoncé de l'exercice:

              "Définissez une fonction eleMax(liste,debut,fin) qui renvoie l’élément ayant la plus grande valeur dans la liste transmise. Les deux arguments debut et fin indiqueront les indices entre lesquels doit s’exercer la recherche, et chacun d’eux pourra être omis"

              • Partager sur Facebook
              • Partager sur Twitter

              Import module ne fonctionne pas

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown