Importer module avec python

Résolu/Fermé
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023 - Modifié le 12 déc. 2022 à 16:30
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 13 déc. 2022 à 14:24

Bonjour à tous,

Je viens vers vous en ce jour car j'ai un projet de noël à faire pour le lycée en python mais je bloque sur un point.

J'ai deux programmes pythons dans deux fichiers différents :

  • le premier contient une fonction qui crée un ciel étoilé
  • le second contient une fonction qui crée un sapin.

Le but est de créer un nouveau fichier où l'on importe ces deux modules pour superposer le sapin sur le ciel étoilé.

Pb, je n'arrive pas à les superposer : lorsque j'importe les modules, seul le ciel étoilé se lance.

Pouvez-vous m'aider s'il vous plaît ?

Cordialement


A voir également:

10 réponses

yamawi Messages postés 13 Date d'inscription lundi 28 février 2022 Statut Membre Dernière intervention 8 février 2024
11 déc. 2022 à 16:35

Bonjour,

est ce que vous pourriez nous montrer vos programmes svp ?

0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
11 déc. 2022 à 17:53

Bonjour, merci de prêter attention à ce post =)

from turtle import *
from math import *



def branche(taille : float or int) -> float or int:
    """
    Cette fonction définie la taille des branches du sapin sur l'aller (droit).
    """
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"

    forward(taille)
    left(135)
    forward(taille*3)
    right(135)


def branche_retourne(taille :float or int) ->float or int:
    """
    Cette fonction définie la taille des branches du sapin sur le retour (gauche).
    """
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    forward(taille*3)
    left(135)
    forward(taille)
    right(135)
    
def deplacer_sans_tracer(x :float or int,y :float or int) ->float or int:
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    """
    
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"


    up()
    goto(x, y)
    down()


    

def sapin(taille :float or int) ->float or int:
    """
    Cette fonction définie la couleur du tracé ainsi que la couleur du sapin.
    De plus, elle indique le nombre de répétition pour tracer les branches.
    """
    
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    ht()
    color('green')
    fillcolor('green')    
    begin_fill()   
    for i in range(5):
        branche(taille)
    right(135)
    for i in range (5):
        branche_retourne(taille)
    
    end_fill()
    
    

def tronc():
    """
    Cette fonction permet de déplacer la tortue vers un point (x,y) et qui
    va tracer le tronc du sapin avec une couleur marron.
    Cette fonction ne prend pas en compte de variable de début d'où les () sans
    rien et n'a donc pas besoin d'assertions.
    """
    ht()
    up()
    goto(-80,0)
    down()
    color('#983519')
    fillcolor('#983519')
    begin_fill()
    left(45)
    forward(100)
    right(90)
    forward(50)
    right(90)
    forward(100)
    right(90)
    forward(50)
    end_fill()

    
    
    
   



setup(700,700)
sapin(20)
tronc()
exitonclick()
 

et

from turtle import *
from random import *


def etoile(longueur :float or int) ->float or int:
    """
    La fonction 'etoile()' permet de donner une couleur aux étoiles
    dessinées ainsi la taille de celles-ci. De plus elle définie le
    nombre de branches.
    """
    
    assert type(longueur)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert longueur >0, "Le nombre entré doit être supérieur à 0"
    
    color('yellow')
    for i in range(6):
        forward(longueur)
        backward(longueur)
        left(60)


def deplacer_sans_tracer(x :float or int,y :float or int) ->float or int:
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    """
    
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"


    up()
    goto(x, y)
    down()


def ciel_etoile(nb_etoile :int) ->int:
    """
    Cette fonction définie le fond de la fenêtre (ici bleu) ainsi que
    l'emplacment aléatoir des étoiles.
    """
    
    assert type(nb_etoile)==int, "Le nombre entré ne doit pas être une chaine de caractère ou ne doit pas être un flottant"
    assert nb_etoile >0, "Le nombre entré doit être supérieur à 0"
    
    bgcolor("blue")       # couleur du fond  
    for i in range(nb_etoile):
        longueur_etoile = randint(5,20)
        deplacer_sans_tracer(randint(-300 ,300 ),randint(0,350 ))
        etoile(longueur_etoile)


setup(700,700)
ciel_etoile(1)
exitonclick()

0
yamawi Messages postés 13 Date d'inscription lundi 28 février 2022 Statut Membre Dernière intervention 8 février 2024
11 déc. 2022 à 18:14

Est ce que vous pouvez aussi nous montrer le programme qui à pour but d'importer les deux autres svp?

0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
11 déc. 2022 à 21:35

Et bien j’ai essayé plusieurs trucs mais qui ne marchaient pas donc là je n’ai pas de code pour le troisième fichier.

Savez-vous comment faire cela ?

cordialement


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Il suffit simplement de déplacer le curseur au centre pour dessiner ton sapin.

from turtle import *
from math import *
from random import *


def etoile(longueur: float or int) -> float or int:
    """
    La fonction 'etoile()' permet de donner une couleur aux étoiles
    dessinées ainsi la taille de celles-ci. De plus elle définie le
    nombre de branches.
    """
    assert (
        type(longueur) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"
    assert longueur > 0, "Le nombre entré doit être supérieur à 0"
    color("yellow")
    for i in range(6):
        forward(longueur)
        backward(longueur)
        left(60)


def ciel_etoile(nb_etoile: int) -> int:
    """
    Cette fonction définie le fond de la fenêtre (ici bleu) ainsi que
    l'emplacment aléatoir des étoiles.
    """

    assert (
        type(nb_etoile) == int
    ), "Le nombre entré ne doit pas être une chaine de caractère ou ne doit pas être un flottant"
    assert nb_etoile > 0, "Le nombre entré doit être supérieur à 0"

    bgcolor("blue")  # couleur du fond
    for i in range(nb_etoile):
        longueur_etoile = randint(5, 20)
        deplacer_sans_tracer(randint(-300, 300), randint(0, 350))
        etoile(longueur_etoile)


def branche(taille: float or int) -> float or int:
    """
    Cette fonction définie la taille des branches du sapin sur l'aller (droit).
    """
    assert (
        type(taille) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille > 0, "Le nombre entré doit être supérieur à 0"

    forward(taille)
    left(135)
    forward(taille * 3)
    right(135)


def branche_retourne(taille: float or int) -> float or int:
    """
    Cette fonction définie la taille des branches du sapin sur le retour (gauche).
    """
    assert (
        type(taille) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille > 0, "Le nombre entré doit être supérieur à 0"

    forward(taille * 3)
    left(135)
    forward(taille)
    right(135)


def deplacer_sans_tracer(x: float or int, y: float or int) -> float or int:
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    """

    assert (
        type(x) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"
    assert (
        type(x) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"

    up()
    goto(x, y)
    down()


def sapin(taille: float or int) -> float or int:
    """
    Cette fonction définie la couleur du tracé ainsi que la couleur du sapin.
    De plus, elle indique le nombre de répétition pour tracer les branches.
    """

    assert (
        type(taille) == float or int
    ), "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille > 0, "Le nombre entré doit être supérieur à 0"

    ht()
    color("green")
    fillcolor("green")
    begin_fill()
    for i in range(5):
        branche(taille)
    right(135)
    for i in range(5):
        branche_retourne(taille)

    end_fill()


def tronc():
    """
    Cette fonction permet de déplacer la tortue vers un point (x,y) et qui
    va tracer le tronc du sapin avec une couleur marron.
    Cette fonction ne prend pas en compte de variable de début d'où les () sans
    rien et n'a donc pas besoin d'assertions.
    """
    ht()
    up()
    goto(-80, 0)
    down()
    color("#983519")
    fillcolor("#983519")
    begin_fill()
    left(45)
    forward(100)
    right(90)
    forward(50)
    right(90)
    forward(100)
    right(90)
    forward(50)
    end_fill()


setup(700, 700)
ciel_etoile(15)
deplacer_sans_tracer(0, 0)  # remise au centre
sapin(20)
tronc()
exitonclick()
0
yamawi Messages postés 13 Date d'inscription lundi 28 février 2022 Statut Membre Dernière intervention 8 février 2024
11 déc. 2022 à 23:01

Voilà, vous pouvez utilisez le programme de bhore. Mais si vous voulez que ce soit un programme qui appelle le module sapin et le module ciel.

Il faut que vous mettiez tout le code qui n'est ni un import ni une fonction dans les programmes ciel et sapin dans une condition if __name__ == '__main__'.

ça nous donne donc :

sapin.py :

from turtle import *
from math import *



def branche(taille : float or int) -> float or int:
    """
    Cette fonction définie la taille des branches du sapin sur l'aller (droit).
    """
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"

    forward(taille)
    left(135)
    forward(taille*3)
    right(135)


def branche_retourne(taille :float or int) ->float or int:
    """
    Cette fonction définie la taille des branches du sapin sur le retour (gauche).
    """
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    forward(taille*3)
    left(135)
    forward(taille)
    right(135)
    
def deplacer_sans_tracer(x :float or int,y :float or int) ->float or int:
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    """
    
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"


    up()
    goto(x, y)
    down()


    

def sapin(taille :float or int) ->float or int:
    """
    Cette fonction définie la couleur du tracé ainsi que la couleur du sapin.
    De plus, elle indique le nombre de répétition pour tracer les branches.
    """
    
    assert type(taille)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    ht()
    color('green')
    fillcolor('green')    
    begin_fill()   
    for i in range(5):
        branche(taille)
    right(135)
    for i in range (5):
        branche_retourne(taille)
    
    end_fill()
    
    

def tronc():
    """
    Cette fonction permet de déplacer la tortue vers un point (x,y) et qui
    va tracer le tronc du sapin avec une couleur marron.
    Cette fonction ne prend pas en compte de variable de début d'où les () sans
    rien et n'a donc pas besoin d'assertions.
    """
    ht()
    up()
    goto(-80,0)
    down()
    color('#983519')
    fillcolor('#983519')
    begin_fill()
    left(45)
    forward(100)
    right(90)
    forward(50)
    right(90)
    forward(100)
    right(90)
    forward(50)
    end_fill()

    
    
    
    
if __name__ == '__main__': 
'''le code dans if __name__ == '__main__' ne s'execute pas si c'est un autre programme qui l'appelle'''
    setup(700,700)
    sapin(20)
    tronc()
    exitonclick()

ciel.py :

from turtle import *
from random import *


def etoile(longueur :float or int) ->float or int:
    """
    La fonction 'etoile()' permet de donner une couleur aux étoiles
    dessinées ainsi la taille de celles-ci. De plus elle définie le
    nombre de branches.
    """
    
    assert type(longueur)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert longueur >0, "Le nombre entré doit être supérieur à 0"
    
    color('yellow')
    for i in range(6):
        forward(longueur)
        backward(longueur)
        left(60)


def deplacer_sans_tracer(x :float or int,y :float or int) ->float or int:
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    """
    
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"
    assert type(x)==float or int, "Le nombre entré ne doit pas être une chaine de caractère"


    up()
    goto(x, y)
    down()


def ciel_etoile(nb_etoile :int) ->int:
    """
    Cette fonction définie le fond de la fenêtre (ici bleu) ainsi que
    l'emplacment aléatoir des étoiles.
    """
    
    assert type(nb_etoile)==int, "Le nombre entré ne doit pas être une chaine de caractère ou ne doit pas être un flottant"
    assert nb_etoile >0, "Le nombre entré doit être supérieur à 0"
    
    bgcolor("blue")       # couleur du fond  
    for i in range(nb_etoile):
        longueur_etoile = randint(5,20)
        deplacer_sans_tracer(randint(-300 ,300 ),randint(0,350 ))
        etoile(longueur_etoile)


if __name__ == '__main__':
    setup(700,700)
    ciel_etoile(1)
    exitonclick()

le programme qui regroupe les deux autres  :

from turtle import *
from ciel import *
from sapin import *

setup(700,700)
ciel_etoile(1)
deplacer_sans_tracer(0, 0)
sapin(20)
tronc()
exitonclick()
0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
12 déc. 2022 à 07:09

Merci pour votre réponse !

en effet comme l’a dit @yamawi StatutMembre il faut créer un nouveau fichier…

Je vais tester cela aujourd’hui et je reviens vers vous !


0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
12 déc. 2022 à 16:32

Bonjour,

Soit tu crées un troisième fichier, soit tu importes les deux fonctions (disons dessiner_ciel depuis ciel.py et dessiner_sapin depuis sapin.py) depuis ton interpréteur python avec les fonctions suivantes :

from sapin import dessiner_sapin
from ciel import dessiner_ciel

dessiner_sapin()
dessiner_ciel()

Bonne chance

0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
12 déc. 2022 à 16:58

Bonjour, j'ai essayer vos deux codes @mamiemando StatutModérateur et @yamawi StatutMembre mais cela ne marche pas : je l'ai testé sur deux environnements différents et deux problèmes différents : d'un côté avec l'éditeur "Thonny" seul le ciel étoilé s'affiche et d'un autre côté, sur "VS code" j'ai des problèmes avec les :

def fonction (variable : float or int) -> float or int :

La console m'indique une syntaxe invalide avec les ':' entre parenthèse.

Quand je les enlève, j'ai une nouvelle erreur qui m'indique que le code n'est pas encodé en ASCII or python fonctionne en UTF-8...

Je ne comprends pas.

Cordialement


0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
12 déc. 2022 à 17:59

Bonjour, 

Cela ne correspond pas au code que je t'ai donné. Et effectivement, float or int n'est pas un type, donc syntaxiquement c'est incorrect. Tu devrais plutôt écrire float.

Ensuite par rapport au code que je t'ai donné, il faut évidemment adapter le nom des modules et des fonctions par rapport à ceux que tu utilisent.

sapin.py

def dessiner_sapin():
   print("sapin")

ciel.py  

def dessiner_ciel():
   print("ciel")

toto.py  

from sapin import dessiner_sapin
from ciel import dessiner_ciel

dessiner_sapin()
dessiner_ciel()

Résultat

sapin
ciel

Bonne chance

0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
12 déc. 2022 à 19:55

J'ai finalement réussi à les superposer sur l'IDE Thonny avec ces codes :

Sapin.py

# -*- coding: utf-8 -*-
from turtle import *
from math import *




def branche(taille : float ) -> float :
    """
    Cette fonction définie la taille des branches du sapin sur l'aller (droit).
    Le nombre entré doit être un flottant
    """
    assert type(taille)==float, "Le nombre entré doit être un flottant"
    assert taille >0, "Le nombre entré doit être supérieur à 0"

    forward(taille)
    left(135)
    forward(taille*3)
    right(135)


def branche_retourne(taille :float ) ->float :
    """
    Cette fonction définie la taille des branches du sapin sur le retour (gauche).
    Le nombre entré doit être un flottant.
    """
    assert type(taille)==float , "Le nombre entré doit être un flottant"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    forward(taille*3)
    left(135)
    forward(taille)
    right(135)
    
def deplacer_sans_tracer(x :float ,y :float ) ->float :
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    Le nombre entré doit être un flottant.
    """
    
    assert type(x)==float, "Le nombre entré doit être un flottant"
    assert type(y)==float, "Le nombre entré doit être un flottant"


    up()
    goto(x, y)
    down()


    

def sapin(taille :float) ->float :
    """
    Cette fonction définie la couleur du tracé ainsi que la couleur du sapin.
    De plus, elle indique le nombre de répétition pour tracer les branches.
    Le nombre entré doit être un flottant
    """
    
    assert type(taille)==float , "Le nombre entré doit être un flottant"
    assert taille >0, "Le nombre entré doit être supérieur à 0"
    
    ht()
    up()
    goto(0.0,0.0)
    color('green')
    fillcolor('green')    
    begin_fill()   
    for i in range(5):
        branche(taille)
    right(135)
    for i in range (5):
        branche_retourne(taille)
    
    end_fill()
    
    

def tronc():
    """
    Cette fonction permet de déplacer la tortue vers un po (x,y) et qui
    va tracer le tronc du sapin avec une couleur marron.
    Cette fonction ne prend pas en compte de variable de début d'où les () sans
    rien et n'a donc pas besoin d'assertions.
    """
    
    up()
    
    goto(-80,0)
    color('#983519')
    fillcolor('#983519')
    begin_fill()
    down()
    
    left(45)
    forward(100)
    right(90)
    forward(50)
    right(90)
    forward(100)
    right(90)
    forward(50)
    end_fill()



 

etoile.py

# -*- coding: utf-8 -*-
from turtle import *
from random import *


def etoile(longueur )  :
    """
    La fonction 'etoile()' permet de donner une couleur aux étoiles
    dessinées ainsi la taille de celles-ci. De plus elle définie le
    nombre de branches. Le nombre entré doit être un entier
    """
    
    assert type(longueur)==int , "Le nombre entré doit être un entier "
    assert longueur >0, "Le nombre entré doit être supérieur à 0"
    
    color('yellow')
    for i in range(6):
        forward(longueur)
        backward(longueur)
        left(60)


def deplacer_sans_tracer(x :int ,y :int) ->int :
    """
    Cette fonction permet de déplacer "la tortue" sans qu'elle ne dessine
    pour ajouter une nouvelle étoile à un autre endroit.
    Le nombre entré doit être un entier.
    """
    
    assert type(x)==int , "Le nombre entré doit être un entier"
    assert type(x)==int, "Le nombre entré ne doit pas être une chaine de caractère"


    up()
    goto(x, y)
    down()


def ciel_etoile(nb_etoile :int) ->int:
    """
    Cette fonction définie le fond de la fenêtre (ici bleu) ainsi que
    l'emplacment aléatoir des étoiles.
    """
    
    assert type(nb_etoile)==int, "Le nombre entré ne doit pas être une chaine de caractère ou ne doit pas être un flottant"
    assert nb_etoile >0, "Le nombre entré doit être supérieur à 0"
    
    bgcolor("blue")       # couleur du fond  
    for i in range(nb_etoile):
        longueur_etoile = randint(5,20)
        deplacer_sans_tracer(randint(-300 ,300 ),randint(0,350 ))
        etoile(longueur_etoile)



et noel.py

# -*- coding: utf-8 -*-
from sapin import tronc
from sapin import sapin
from etoile import ciel_etoile

ciel_etoile(16)
sapin(20.0)
tronc()

Je n'ai par contre pas réussi avec l'IDE VSCode.

En tout cas, merci à vous tous pour m'avoir aidé !!!! =)


0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
12 déc. 2022 à 20:36

Si ça ne marche pas dans VSCode, il faut t'assurer que le script que tu as créé dans VSCode est bien placé dans le même dossier que sapin.py et etoile.py sinon ça ne peut pas marcher. Ensuite, tout dépend de comment tu as configuré ton projet, mais n'utilisant pas VSCode je ne saurais te dire ce qui ne va pas. Si tu es plus à l'aise avec Thonny, peut-être que le plus simple c'est que tu te contentes de cet IDE ;-)

0
Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023 > mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024
12 déc. 2022 à 21:31

Ouais bah je sais pas du coup car oui les trois fichiers sont dans le même dossier (c’est pour cela que ça marche avec Thonny)

Bonne soirée 

0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749 > Macintosh_76 Messages postés 47 Date d'inscription lundi 30 mars 2020 Statut Membre Dernière intervention 23 décembre 2023
13 déc. 2022 à 14:24

Peut-être que ton IDE VSCode indique pourquoi il ne comprend pas les import ? Voir par exemple ce lien.

0