IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème création programme python


Sujet :

Python

  1. #21
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    En fait depuis le début elle se dit
    L’ordi choisit un nombre entre 1 et 100 apellé x
    Puis elle va choisir sa première propo va etre le milieu de 1 a 100 donc 50
    Si l’ordi lui dit plus grand elle va prendre le milieu de 50 a 100 (75) en deuxième propo ou le milieu de 1 a 50 (25) si il lui propose plus petit
    Puis si l’ordi lui dit plus grand elle va forcément prendre le milieu de 75 a 100 (87)
    Si au 3eme tour elle repond 87 et que l’ordi lui dit plus petit alors son nombre sera entre 75 et 87 et donc propo suivante 81 et ainsi de suite jusqu’à ce qu’elle tombe sur x.
    Sur le papier c’est super simple, mais c’est dans la traduction du langage Python que ça peche !
    En meme temps avec moins de 2 mois de c’est pas évident de connaître toutes les fonctionnalités

  2. #22
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gilles60000 Voir le message
    Sur le papier c’est super simple, mais c’est dans la traduction du langage Python que ça peche !
    Une boucle. A chaque itération la plage min et max se met à jour en fonction du nombre mystère et du nombre proposé (qui lui est le milieu de min et max). Quand le nombre proposé est égal au nombre mystère c'est fini. while, if, affectation de variables.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Citation Envoyé par Gilles60000 Voir le message
    Si au 3eme tour elle repond 87 et que l’ordi lui dit plus petit alors son nombre sera entre 75 et 87 et donc propo suivante 81 et ainsi de suite jusqu’à ce qu’elle tombe sur x.
    Sur le papier c’est super simple, mais c’est dans la traduction du langage Python que ça peche !
    Tout le travail est d'ajouter ce qui manque pour faire passerelle entre un raisonnement intuitif et ce qui pourra être programmé. Ajoutez des noms de variables pour gérer les bornes de l'intervalle, ce serait déjà un premier pas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #24
    Invité
    Invité(e)
    Par défaut
    Salut voici un exemple de solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #Edit : bon d'accord...
    Nom : suite.PNG
Affichages : 171
Taille : 17,6 Ko
    Nom : suite 2.PNG
Affichages : 165
Taille : 28,1 Ko

    Je ne sais pas si c'est plus clair, ainsi ?

    Il faut mettre à jour l'une des deux bornes à chaque étape :
    • Imaginons que la réponse soit x=70 et que m=50.
    • A la première étape, la borne basse mini doit être mise à jour on sait que la réponse est supérieur à 50 donc mini=m=50 et nous devons calculer la nouvelle moyenne m=(maxi+m)/2 soit m=(100+50)/2=75.
    • A l'étape suivante, la réponse est inférieure à m, cette fois-ci c'est la borne haute qui doit être mise à jour maxi=m=75, la nouvelle moyenne m = int((mini+m)/2) soit m=(50+75)/2=62 (mini a été mise à jour à l'étape d'avant).
    • Etc.
    Dernière modification par Invité ; 07/11/2021 à 23h25.

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Salut voici un exemple de solution
    T'as pas remarqué que le but du forum est d'aider l'intervenant à trouver la solution par lui-même ? Tu penses qu'on ne l'avait pas ou juste tu n'as pas lu les règles ???
    T'as juste tout foutu en l'air notre travail.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #26
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    Bonjour à tous,

    Je vous remercie de la part de ma fille pour vos retours, vos conseils et votre aide.

    Finalement Python aura eu raison de sa détermination et de son envie de bien faire…

    Elle est partie en cours ce matin avec sa copie à rendre sur laquelle il y a une ébauche de programme mais l’exercice n’est pas achevé. Elle en est malade !

    La seule chose qui la rassure «*un peu*» c’est que sur une conversation whatsapp que les élèves ont entre eux, aucun élève de sa classe a réussi le programme pour le rendre fonctionnel. Peut être qu’un exercice de cette sorte pour des élèves qui découvrent Python était trop ambitieux de la part de leur prof…

    Je passe la conversation sur «*Résolu*» pour clôturer ce topic

  7. #27
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Pour arriver là, il faut à mon avis entre 4 et 8h de pratique.

  8. #28
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gilles60000 Voir le message
    Peut être qu’un exercice de cette sorte pour des élèves qui découvrent Python était trop ambitieux de la part de leur prof…
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
     
    need=random.randint(1, 100)
     
    essai=0
    cpt=0
    (vMin, vMax)=(1, 100)
    while essai != need:
    	cpt+=1
    	essai=(vMin+vMax)//2
    	if essai > need: vMax=essai-1
    	elif essai < need: vMin=essai+1
    	print(
    		"{}, essai={}, need={} => {}, plage={}".format(
    			cpt,
    			essai,
    			need,
    			"trop petit" if essai < need else "trop grand" if essai > need else "ok",
    			(vMin, vMax),
    		)
    	)
    # while
    print("Trouvé {} en {} coups".format(essai, cpt))

    Mais le plus marrant c'est que la semaine dernière on a ouvert une page destinée à montrer divers exercices Python avec des solutions possibles et que l'un d'entre eux était justement de faire un programme où l'ordinateur doit trouver un nombre selon cette méthode => https://python.developpez.com/exerci...tit-Plus-grand. Un peu plus complexe car là l'ordinateur jouant contre un humain doit alors détecter la tricherie mais la base de la recherche est la même: établir une plage et la restreindre au fur et à mesure selon la réponse donnée.

    Citation Envoyé par Gilles60000 Voir le message
    Elle en est malade !
    Ca ne peut que la motiver encore plus.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #29
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    Alors suite à son cours de SNT de cet après midi, leur prof leur a donné quelques indices. Je ne serai pas vous dire lesquels mais au final elle a réussi à sortir ce programme qui fonctionne.
    Il semblerait que sur une classe de 35 élèves, ils ont été 4 à trouver un programme fonctionnel.
    Voici celui que ma fille à coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from random import *
    x = randint(1,100)
    min = 0
    max = 100
    e = ((min+max)//2) :
    print("je propose",e)
    while e != x:
        if e < x:
            print("Plus grand")
            min = e
            e = int((max+e)//2)
            print("je propose",e)
        else:
            print("Plus petit")
            max = e
            e = int((min+e)//2)
            print("je propose",e)
    print("Félicitations le chiffre mystère est",e)
    Désolé pour la façon dont le script est collé dans le message... Il faudra que je cherche comment faire un beau copier/coller d'un programme Python

    Encore merci à vous tous

    Et pour l'anecdote, leur prof a oublié de leur fournir une sorte de guide avec les principales fonctions de Pyhton comme if, while, print, elif... qui les aurait bien aider dans leur travail. Du coup elle ne notera pas l'exercice 3 du DM

  10. #30
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gilles60000 Voir le message
    Il faudra que je cherche comment faire un beau copier/coller d'un programme Python
    Balise [code=python] en début de code et [/code] à la fin => http://club.developpez.com/regles/#LIII-E.

    Citation Envoyé par Gilles60000 Voir le message
    Voici celui que ma fille à coder :
    Beaucoup de redondances et répétitions. J'ai posté un exemple cet après-midi qu'elle peut étudier.

    Citation Envoyé par Gilles60000 Voir le message
    Et pour l'anecdote, leur prof a oublié de leur fournir une sorte de guide avec les principales fonctions de Pyhton comme if, while, print, elif... qui les aurait bien aider dans leur travail. Du coup elle ne notera pas l'exercice 3 du DM
    Ouais super. Si en plus le prof est débile... Parce que ça ce n'est pas un "guide" mais un "tutoriel" c'est à dire un livre qui explique les bases de la syntaxe et que c'est inconcevable qu'on "l'oublie". Sans ces bases, pas de programmation possible. C'est comme "oublier" de donner le mode d'emploi d'un apppareil ménager. Toutefois on en trouve de très bon gratuits sur le net.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #31
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Balise [code=python] en début de code et [/code] à la fin => http://club.developpez.com/regles/#LIII-E.


    Ouais super. Si en plus le prof est débile... Parce que ça ce n'est pas un "guide" mais un "tutoriel" c'est à dire un livre qui explique les bases de la syntaxe et que c'est inconcevable qu'on "l'oublie". Sans ces bases, pas de programmation possible. C'est comme "oublier" de donner le mode d'emploi d'un apppareil ménager. Toutefois on en trouve de très bon gratuits sur le net.
    Beaucoup de profs de lycée sont à la ramasse en python.
    J'ai eu l'occasion de dispenser quelques initiations à des collègues : certains sont largués, incompétents, débordés, ...
    Ils n'ont pas eu de formation là-dessus la plupart du temps.
    Ils se contentent parfois de récupérer un truc pondu par un collègue sans se rendre compte que comme pour les étudiants, cela ne sert à rien d'utiliser un document que l'on ne s'est pas approprié.

  12. #32
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 998
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Beaucoup de profs de lycée sont à la ramasse en python.
    J'ai eu l'occasion de dispenser quelques initiations à des collègues : certains sont largués, incompétents, débordés, ...
    Ils n'ont pas eu de formation là-dessus la plupart du temps.
    Ils se contentent parfois de récupérer un truc pondu par un collègue sans se rendre compte que comme pour les étudiants, cela ne sert à rien d'utiliser un document que l'on ne s'est pas approprié.
    Python peut représenter un sacré changement pour certains profs.
    J'ai en plusieurs occasion l'opportunité de retourner dans mon ancien lycée pour leur parler de comment ça se passe dans le monde de l'entreprise, pour répondre à leur interrogation, affirmer ou infirmer ce qu'on leur a dit sur notre beau métier. Et du coup, j'ai pu constater les évolutions au niveau de ce qu'on y enseigne au fil des années.

    Dans mon lycée :
    Au début, on abordait la programmation avec des algo théorique et on pratiquait avec Pascal ou Visual Basic. L'objet n'était pas enseigné ou survolé
    Ensuite, toujours des algo théorique mais on s'est mis à pratiquer avec Delphi (et un peu de VBA) et l'objet est devenu une part importante du programme.
    Ensuite, toujours des algo théorique, toujours du Delphi, plus de VBA mais du VB.Net, toujours de l'objet et quasiment plus de procédural (juste au début en fait) et en parallèle un peu de HTML et PHP (mais pas de PHP objet).
    Ensuite, toujours des algo théorique, le choix entre Delphi.Net, C# et VB.Net, toujours de l'objet en en parallèle un peu de HTML et de PHP (PHP objet cette fois).

    Bref, dans mon ancien lycée, on a toujours enseigné avec des Algo et pratiqué essentiellement sur des langages compilés, avec un typage fort et strict et beaucoup de contrôles lors de la compilation. Et pour m'être essayé que récemment en python, je peux comprendre que certains prof soit perturbés par le changement car python
    - est interprété donc n'a pas les contrôles à la compilation, il faut connaître des outils comme pylint (et si tu n'a pas eu de formation, tu ne les connaît pas)
    - ignore le principe d'encapsulation, c'est au développeur de faire attention au nom de la méthode (idem, sans formation, tu ignore tout la "convention").
    - fonctionne avec des modules et nécessite de modifier le SYS_PATH (idem sans formation, c'est un concept qui est inconnu)
    - impose une indentation stricte (selon moi l'une des meilleurs chose de python), mais certain profs n'y ont jamais accordé d'importance car cela n'avait aucun impact et du coup passent énormément de temps avant de se rendre compte de leur erreur.
    - diverge sur d'autres petites choses mais qui ne m'ont pas semblé bloquantes dans le contexte.

  13. #33
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    Bonjour à tous,

    Je reprends le fil de la discussion et je m’aperçois que mes propos vis à vis de l’oubli du prof de donner le
    «*tutoriel*» de Python ouvre une nouvelle discussion sur la formation des profs.

    Tout d’abord ce n’était pas du tout le but de cette phrase. L’idée était qu’avec les bons outils au bon moment le travail est certainement plus facile. Un oubli peut arriver à n’importe qui et je ne jette pas la pierre à son prof.

    Ensuite en ce qui concerne les programmes éducatifs, les profs doivent appliquer ce qui descend de la haute sphère éminente qu’est le ministère de l’éducation nationale. On leur demande de faire du python alors ils doivent apprendre à leurs élèves du Python… La volonté des uns et des autres de se former ou pas à un nouveau
    «*langage*» est personnelle, mais comment faire apprendre quelque chose à un élève qu’on ne maîtrise pas soit même ???

    Pour sve@r, si vous relisez bien l’énoncé de la question 3 le programme doit proposer les nombres à donner pour gagner le plus vite possible. Du coup je me dis que le script de ma fille colle plutôt bien à l’énoncé puisqu’à chaque boucle, la phrase «*je propose «*e*» apparaît, et qui de ce fait répond bien au problème… Je ne vois pas où est la redondance ? D’ailleurs si vous testez le programme donné en début d’exercice a chaque tour python vous demande quel chiffre vous souhaitez proposer, mais dans ce cas il faut l’écrire. Dans son script c’est
    «*automatisé*»

  14. #34
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par popo Voir le message
    - fonctionne avec des modules et nécessite de modifier le SYS_PATH
    Euh... tu voudrais préciser ? Parce que je passe par des modules et, hormis pour certains tests unitaires particuliers, quand mon module A, pour se tester lui-même, a besoin de récupérer un module B qu se trouve dans un autre dossier, je n'ai jamais eu besoin de toucher à sys.path. Et les tests unitaires sont certes utiles, mais pas obligatoires.

    Citation Envoyé par Gilles60000 Voir le message
    Je ne vois pas où est la redondance ?
    La redondance est n'est pas dans l'exécution du code mais dans son écriture. Certaines instructions pourtant identiques sont écrites plusieurs fois.

    Comparez plutôt ce script qui produit le même résultat...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    from random import *
    x = randint(1,100)
    vMin = 0
    vMax = 100
    e=0
    while e != x:
    	e = (vMin+vMax)//2
    	print("je propose",e)
    	if e < x:
    		print("Plus grand")
    		vMin = e
    	else:
    		print("Plus petit")
    		vMax = e
    	# if
    # while
    print("Félicitations le chiffre mystère est",e)
    Même en rajoutant les fins de blocs en commentaire (je trouve plus facile à relire ainsi) il y a quand-même moins de lignes. Attention, ne nous méprenons pas, le but que je défends n'est pas de chercher à tout prix le moins de lignes possibles. On sait le mal que ça a fait au C à tel point qu'il existe maintenant le concours du programme C le plus horrible. De même il existe sur le net un site de challenge de programmation Python sur lequel je vais parfois et l'un de ces challenges est d'avoir le programme Python le plus court possible. Sauf que le site (totalement robotisé) ne fera pas le distinguo entre "plus court en écriture" et "plus court tout court" et au total, au lieu de forcer les joueurs à tenter de trouver d'élégantes astuces Python, ça les force juste à mettre des noms de variables à un caractère et à supprimer les espaces de lisibilité => for math import* par exemple.
    Donc je ne prône pas le "moins de lignes à tout prix" mais juste d'éviter les répétitions inutiles. Par exemple ce code
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ...:
    	actionA
    	actionX
    else:
    	actionB
    	actionX
    n'aura aucun inconvénient à se voir écrire ainsi
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ...:
    	actionA
    else:
    	actionB
    actionX
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #35
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 998
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Euh... tu voudrais préciser ? Parce que je passe par des modules et, hormis pour certains tests unitaires particuliers, quand mon module A, pour se tester lui-même, a besoin de récupérer un module B qu se trouve dans un autre dossier, je n'ai jamais eu besoin de toucher à sys.path. Et les tests unitaires sont certes utiles, mais pas obligatoires.
    A moins que je n'ai pas compris (ce qui est fort possible) sys.path.insert ne sert il pas à insérer des chemins dans le SYS_PATH pendant l'exécution ?

    Le tutoriel python-flask de Serge Tahé décrit tout un chapitre sur les imports (chapitre 9) et nous fait écrire une routine set_syspath qui insert des répertoires dans le SYS_PATH via sys.path.insert. Les 26 chapitres suivant ont TOUS des fichiers config.py qui s'appuient sur cette routine. Du coup j'en ai déduit que c'était super important.
    Le tutoriel en question :
    https://tahe.developpez.com/tutoriel...on-flask-2020/

    Pour la redondance je suis d'accord mais vu l'exercice, ils n'en sont qu'au début de leur apprentissage. Si j'etais le prof j'expliquerai comment ameliorer le code (comme tu l'as fait) mais considérerai que le comportement voulu par l'exercice à bien été atteint et n'enlèverai pas de points à ce stade de l'apprentissage.

  16. #36
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Citation Envoyé par popo Voir le message
    A moins que je n'ai pas compris (ce qui est fort possible) sys.path.insert ne sert il pas à insérer des chemins dans le SYS_PATH pendant l'exécution ?
    C'est pas comme si en programmant avec C/C++ on n'ait pas à préciser là où trouver "en-tête" et autres DLL... lorsqu'ils ne sont pas dans le chemin par défaut.

    Côté concept, ça n'a rien de très nouveau.
    Et ça se trouve dans le tuto. qui vient avec Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #37
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 998
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est pas comme si en programmant avec C/C++ on n'ait pas à préciser là où trouver "en-tête" et autres DLL... lorsqu'ils ne sont pas dans le chemin par défaut.

    Côté concept, ça n'a rien de très nouveau.
    Et ça se trouve dans le tuto. qui vient avec Python.

    - W
    Sauf si comme je l'ai précisé les profs en question n'ont jamais fait de C ou de C+. Ne fais pas de ton cas personnel, une généralité. Il y a tout un tas de prof et de programmeurs qui n'y n'ont jamais vu une seule ligne de C ou de C++

    Le tutoriel qui vient avec Python ? Quand je l'ai installé il ne m'a ouvert aucun tutoriel. Et les tutoriels pour débutants que tu trouves sur le net ne le mentionne pas. Même sur les sites spécialisés comme openclassroom ou tutorialspoint, c'est dans les concepts avancés. Mais ça doit être moi qui n'ai pas de bol et tombe que sur des tutoriel où ce n'est pas abordé.

    La réalité est que quand tu es prof et qu'on de dit que tu as deux moi pour apprendre le Python car tu devras l'enseigner à tes élèves à la rentrée, tu be peux pas enseigner efficacement.

  18. #38
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Citation Envoyé par popo Voir le message
    Sauf si comme je l'ai précisé les profs en question n'ont jamais fait de C ou de C+. Ne fais pas de ton cas personnel, une généralité. Il y a tout un tas de prof et de programmeurs qui n'y n'ont jamais vu une seule ligne de C ou de C++
    Pour enseigner la programmation en utilisant le langage Python, un prof. n'a pas besoin de connaître les subtilités de sys.path ni C ou C++.

    C'est juste vous qui pensez que ce devrait être nécessaire et qui peinez à trouver où on en parle. Le tutoriel Python (qui vient avec la documentation de Python) devrait être potassé par tous les programmeurs qui veulent se mettre à Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  19. #39
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 998
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pour enseigner la programmation en utilisant le langage Python, un prof. n'a pas besoin de connaître les subtilités de sys.path ni C ou C++.

    C'est juste vous qui pensez que ce devrait être nécessaire et qui peinez à trouver où on en parle. Le tutoriel Python (qui vient avec la documentation de Python) devrait être potassé par tous les programmeurs qui veulent se mettre à Python.

    - W
    C'est vrai que j'accorde sans doute trop d'importance à l'organisation du code.
    Il est tellement plus simple de tout mettre dans un seul fichier à la racine...
    Cela va donner de bonnes bases à ces étudiant qui n'auront du coup plus besoin de faire un seul import.

    Ou alors, il y a encore un super tutoriel que tous les débutants sont sensé connaître.
    Vous devriez en faire une liste et la refiler à l'Education Nationale...

    Ce n'est pas la première fois que que je constate que vous prenez les gens de haut en leur disant que "c'est noté dans dans tous les bons tutoriels".
    Le tutoriel que vous mentionnez, je l'ai lu, c'est même le premier que j'ai lu.
    Alors, je suis sans doute un abruti fini incapable de comprendre des phrases simples parce que je trouve que le peu que ce tutoriel en dit au chapitre 6 n'aide vraiment pas à comprendre à quoi ça sert, ni à quel moment il faut s'en servir.

  20. #40
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par popo Voir le message
    A moins que je n'ai pas compris (ce qui est fort possible) sys.path.insert ne sert il pas à insérer des chemins dans le SYS_PATH pendant l'exécution ?
    Exact.

    Citation Envoyé par popo Voir le message
    Le tutoriel python-flask de Serge Tahé décrit tout un chapitre sur les imports (chapitre 9) et nous fait écrire une routine set_syspath qui insert des répertoires dans le SYS_PATH via sys.path.insert. Les 26 chapitres suivant ont TOUS des fichiers config.py qui s'appuient sur cette routine. Du coup j'en ai déduit que c'était super important.
    Le tutoriel en question :
    https://tahe.developpez.com/tutoriel...on-flask-2020/
    Ok je vois mieux ton souci. Cela vient du fait que ce tutoriel passe par un intermédiaire (PyCharm) qui est apparemment un IDE. Or cet IDE (attention, je ne le connais pas, je ne l'utilise pas, tout ce que je dis n'est qu'une hypothèse par rapport à ce que je lis de ce chapitre 9 et par rapport à ma façon de travailler) ne considère pas le programme exécuté comme étant la racine d'exécution.

    Quand on est dans un programme Python, je veux dire par là quand on exécute un script Python comme on exécute un script shell (rappel: Python a été écrit sur et donc fatalement plus adapté à Unix/Linux), en tapant simplement son nom, Python considère l'emplacement du script comme étant la racine d'exécution. Et tous les imports faits depuis ce script cherchent l'import dans le dossier du script.
    Exemple:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import toto
    from titi import tutu
    Cet exemple présume l'existence d'un fichier "toto.py" et d'un dossier "titi" lui-même contenant "tutu.py" à l'endroit où se trouve ce script qui les importe (et non pas à l'endroit où toi tu te trouves quand tu appelles ce script). C'est ce qu'on nomme les "import absolus" car (du point de vue du script) ils sont à sa racine à lui (tout comme un chemin absolu part de la racine de l'OS). Accessoirement P2 acceptait des imports relatifs (à ta position), P3 ne les accepte plus.
    Donc en Python, si tu respectes la règle, ça marche. Mais (et c'est là qu'entre en jeu mon hypothèse) PyCharm lui ne fonctionne pas ainsi (toujours dangereux de passer par un intermédiaire). Donc depuis PyCharm tu dois apparemment spécifier comment chercher les imports et cela se fait via la variable sys.path qui permet si besoin de dire "attention j'ai certains imports qui ne se trouvent pas ici mais ailleurs" mais qui est (quand on travaille juste avec Python et non avec un intermédiaire) rarement nécessaire.

    Dans mes projets j'ai diverses librairies style libToto, libTiti mais mes projets importent libToto.toto ou libTiti.titi et ça fonctionne car je reste au niveau de Python. Et même si libToto.toto importe libTiti.titi ça fonctionne toujours car cette instruction est, à l'origine, partie depuis le script qui lui se trouve à la racine de cette arborescence.
    Le seul moment où j'ai besoin de modifier sys.path c'est quand je veux tester toto de façon individuelle. Je l'exécute donc mais là le processus ne se trouve plus à la racine du projet mais sous le dossier libToto. Et fatalement s'il importe libTiti.titi il ne le trouve pas.

    Citation Envoyé par popo Voir le message
    parce que je trouve que le peu que ce tutoriel en dit au chapitre 6 n'aide vraiment pas à comprendre à quoi ça sert, ni à quel moment il faut s'en servir.
    C'est vrai que comprendre comment Python gère les imports c'est un peu ardu (et j'ai beau dire, je ne suis pas certain d'avoir tout bien compris). Un très bon tutoriel plein d'humour ici: https://sametmax2.com/les-imports-en-python/index.html.

    Citation Envoyé par popo Voir le message
    Pour la redondance je suis d'accord mais vu l'exercice, ils n'en sont qu'au début de leur apprentissage. Si j'etais le prof j'expliquerai comment ameliorer le code (comme tu l'as fait) mais considérerai que le comportement voulu par l'exercice à bien été atteint et n'enlèverai pas de points à ce stade de l'apprentissage.
    Tout à fait. Ma remarque de base n'était pas une sanction mais une indication. Et comme j'avais posté un exemple plus haut, cette indication était implictement complétée par "il faut comparer avec mon exemple pour mieux voir ce que j'entends par là"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Problème sur programme Python
    Par bugok dans le forum Bibliothèques tierces
    Réponses: 2
    Dernier message: 10/01/2021, 12h56
  2. [Python 2.X] Problème création programme avec des fonctions
    Par LEAG2506 dans le forum Général Python
    Réponses: 1
    Dernier message: 02/03/2019, 17h35
  3. problème de programme python
    Par grobient dans le forum Général Python
    Réponses: 6
    Dernier message: 01/05/2017, 14h09
  4. Création programme python simple rémunéré
    Par jonetzo dans le forum Général Python
    Réponses: 6
    Dernier message: 15/03/2014, 10h54
  5. Problème création programme .vbs
    Par methylene dans le forum VBScript
    Réponses: 2
    Dernier message: 04/03/2010, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo