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

Livres Python Discussion :

[Livre] Apprendre à programmer avec Python 3, de Gérard Swinnen [Tutoriel]


Sujet :

Livres Python

  1. #1
    Expert éminent sénior
    Avatar de Lana.Bauer
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5 382
    Points : 12 109
    Points
    12 109
    Par défaut [Livre] Apprendre à programmer avec Python 3, de Gérard Swinnen
    Bonjour,

    Nous avons le plaisir de vous présenter le livre Apprendre à programmer avec Python 3, de Gérard Swinnen à consulter ou à télécharger gratuitement.

    Conçu à l'origine pour les élèves de l'enseignement secondaire belge, ce cours expérimental s'efforce de présenter l'apprentissage de la programmation sous une forme attrayante, avec de nombreux exemples et exercices graphiques.

    La version papier de ce livre est disponible sur Amazon à cette adresse

    Voir aussi : Les tutoriels et cours de formation pour apprendre la programmation Python.

    Bonne lecture

  2. #2
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Livre magnifique pour apprendre Python
    Je le lis avec plaisir

    Merci beaucoup pour ce partage

  3. #3
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut Erreur dans un exercice
    Bonjour

    Il me semble que l'exercice 12.5 comporte une erreur : la surface d'un cylindre de rayon 5 et de hauteur 7 ne vaut pas 78.54.

    Je pense qu'il aurait fallu surcharger la méthode Cercle.surface pour l'adapter au cylindre.

    On trouve la même erreur dans la version html (voir exrcice 12.5) qui est proposée sur le site.

    Pierre
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    Dans l'énoncé il est question de surface de section.

    surface() (qui aurait mieux été nomée aire) est héritée de Cercle.

    Le résultat est donc exact, mais il ne s'agit pas de la surface du cylindre.

    Cela dit, je comprend la confusion, donner une méthode surface() à un objet sachant que cette méthode ne retournera pas la surface de l'objet n'est pas judicieux.

  5. #5
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Cela dit, je comprend la confusion, donner une méthode surface() à un objet sachant que cette méthode ne retournera pas la surface de l'objet n'est pas judicieux.
    Je suis d'accord. J'ai donc fait l'exercice en surchargeant la méthode Cercle.surface() pour l'adapter au cylindre.

    Mais j'ai un problème pour le cône car il n'existe pas de formule donnant la surface d'un cône quelconque. Il faudrait donc supprimer la méthode surface pour la classe Cone, ce qui induit une question (probablement assez bête) :

    Comment fait-on pour supprimer une méthode héritée de la classe parent ?

    Merci de votre aide
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Toujours en la surchargeant dans la classe Cone()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Class Cone(Cercle):
        ...
     
        def surface(self):
            raise NotImplementedError('Cone has no method surface')

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Cela dit, je comprend la confusion, donner une méthode surface() à un objet sachant que cette méthode ne retournera pas la surface de l'objet n'est pas judicieux.
    Au contraire, ça montre que ce qu'on lit dans le code et ce que fait le code sont deux aspects/points de vue différents:
    - le service rendu a l'utilisateur,
    - la réalisation de ce service.
    Si la méthode était nommée "X12345", il aurait fallu ajouter des commentaires pour savoir ce que ça fait et il n'y aurait pas d’ambiguïté sur le nom.
    Cela illustre bien hiatus et confusions qu'il peut y avoir entre OO et POO.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Toujours en la surchargeant dans la classe Cone()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Class Cone(Cercle):
        ...
     
        def surface(self):
            raise NotImplementedError('Cone has no method surface')
    J'ai essayé ce code. Il provoque une exception lors de l’exécution :

    NotImplementedError: Cone has no method surface

    Je pense que c'est cela qui ce est attendu ?

    Mais avec ce code la classe Cone() possède toujours une méthode surface(). On ne peut pas l'éliminer complètement ? On obtiendrait aussi une exception je pense mais ce serait plus élégant non ?
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    @ wiztricks, je m'en tenais au nommage de la méthode
    Explicit is better than implicit.
    @ Pierrot92320,
    Oui bien sur, cela lève une erreur, mais tu peux remplacer le raise par un pass ou un return ou un message de logging selon la destination de ton code, librairie, frontend, utilitaire ou autre

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Citation Envoyé par VinsS Voir le message
    @ wiztricks, je m'en tenais au nommage de la méthode
    Explicit is better than implicit.
    Le nom d'une méthode est toujours explicite.
    La confusion vient du concept que vous allez "implicitement" attacher.
    Que vous lui donniez le nom de "surface", de "z123" ou de "base" ne donne aucune information "explicite" sur ce qui est calcule.
    A temps perdu essayez de lire ceci. en particulier, les paragraphes sur les noms d'oiseaux.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Que vous lui donniez le nom de "surface", de "z123" ou de "base" ne donne aucune information "explicite" sur ce qui est calcule.
    Si je vous comprends bien, votre conseil serait de donner aux méthodes et fonctions des noms qui n'ont aucun sens afin de ne pas induire en erreur ? Je ne pense pas que ce soit cela que vous vouliez dire ... Alors expliquez-moi comment choisir les noms ? (en termes simples si cela est possible, et sans digression philosophique car je ne suis qu'un débutant, comme beaucoup ici).

    Merci d'avance

    P.S. A la fin de l'article sur les oiseaux, qui est très intéressant, l'auteur nous dit : Afin de pouvoir nous parler, nous devons avoir des mots et c'est bien ainsi. J'ajouterais : afin de se comprendre il faut choisir les bons mots !
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  12. #12
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    Un des conseils qu'on peut donner serait d'utiliser les docstrings.

    Et pour te former, les cours et tutoriels Python https://python.developpez.com/cours/
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  13. #13
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Un des conseils qu'on peut donner serait d'utiliser les docstrings.
    Merci beaucoup Fred, c'est un renseignement très utile dont je vais profiter.
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Citation Envoyé par Pierrot92320 Voir le message
    Si je vous comprends bien, votre conseil serait de donner aux méthodes et fonctions des noms qui n'ont aucun sens afin de ne pas induire en erreur ?
    Si vous écrivez un programme c'est d'abord pour qu'il soit interprété correctement par l'ordinateur. Les étiquettes que vous allez choisir ne seront qu'un confort pour le programmeur.
    Le titre de l'exercice est "# Classes dérivées - Polymorphisme".
    Vous vous offusquez a cause de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("Surf. de section du cylindre =", cyl.surface())
    parce que cyl.surface malgré son nom retourne autre chose que...
    Alors qu'un des buts de l'exo. est de montrer l’héritage de la méthode "surface" définie dans "Cercle" par la sous/classe Cylindre.
    Histoire de rendre la chose plus digeste, l'auteur a choisi des noms qui vous parlent Cercle, Cylindre, Cone, surface, volume,...
    C'est ainsi qu'on présente la POO aux débutants.
    Une fois ces notions digérées vous pourrez vous contenter de A, B, C, f, g, h pour tester ces comportements.

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

  15. #15
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut Une coquille sur un exemple du cours
    Bonjour

    Le script présenté au chapitre 13.1.b provoque une exception "IndexError: list index out of range" lorsqu'on entre certaines valeurs de résistance. Par exemple 49.7 ohms. Cela se produit si la valeur entrée est inférieure à 100 et si la partie décimale se termine par 9.5 ou 9.6 ou 9.7 ou 9.8 ou 9.9.

    C'est dû à une maladresse dans la manière de faire l'arrondi en ligne 51. Il faut en effet retirer le terme " +.5 " dans la formule car dans les cas indiqués ci-dessus, la valeur arrondie sera égale à 10. Et comme cette valeur est affectée à li[1], cela provoque une erreur (car la liste self.cc n'a pas d'élément d'index égal à 10).

    Il faut donc s'y prendre autrement pour faire l'arrondi.
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  16. #16
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Pierrot92320 Voir le message
    Il faut donc s'y prendre autrement pour faire l'arrondi.
    On peut par exemple insérer ce code avant la ligne 47
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                # On arrondit v à 2 chiffres significatifs
                v = int(10*v/ordgr+0.5)*ordgr/10
                # Mais il faut recalculer logv et ordgr car v a changé
                logv = int(log10(v))                    
                ordgr = 10**logv
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Salut,

    Bien vu et bonne analyse!
    Comme l'auteur ne lit probablement pas ce forum, pourquoi ne pas lui écrire?

    Les specs disant:
    Ce système ne permet évidemment de préciser une valeur numérique qu'avec deux chiffres significatifs seulement.
    Ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                # extraction du second chiffre significatif :
                li[1] = int(int(decim*10) +.5)  # +.5 pour arrondir correctement
    me semblerait plus correct (au sens "ca fait ce qu'on a dit").

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

  18. #18
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Bien vu et bonne analyse!
    Merci ! Pour modifier le code comme vous dites il faudrait aussi modifier le cahier des charges :

    Contrainte : Le programme doit accepter toute entrée numérique fournie sous forme entière ou réelle, dans les limites de 10 à 10e11 W. Par exemple, une valeur telle que 4.78e6 doit être acceptée et arrondie correctement, c'est-à-dire convertie en 4800000 W.
    Et de toutes façons ce code ne donne pas un résultat correct. Il suffit de faire quelques essais pour le voir.
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  19. #19
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Comme l'auteur ne lit probablement pas ce forum, pourquoi ne pas lui écrire?
    J'ai suivi votre conseil et voilà ce que m'a répondu l'auteur :

    Vous avez parfaitement raison. Merci de m'avoir signalé cette erreur.
    En fait, le programme fonctionne correctement tant que vous ne lui fournissez que des valeurs à deux chiffres significatifs seulement, ou des valeurs telles que si on les arrondit à deux chiffres significatifs, le premier de ceux-ci ne soit pas affecté.

    Par exemple, 46892 ou 49 ne produisent pas d'erreur, mais bien 49875 ou 49.7

    On peut ajouter divers correctifs, tels que par exemple, forcer l'arrondi à deux chiffres significatifs avant les autres calculs, ou plus simplement encore, ajouter les instructions ci-dessous juste après la ligne 51:

    if li[1] ==10:
    li[1] =0
    li[0] +=1

    Ainsi on effectue un report, les deux chiffres significatifs sont traités correctement, et l'erreur disparaît.

    En tant que vieil électronicien amateur, j'avoue que je n'avais pas bien testé ce programme, mais le code des couleurs pour les résistances courantes que j'ai manipulées ne mentionnait la plupart du temps que deux chiffres significatifs !
    Pierre
    Je travaille avec Word 2019 sous Windows 10

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    re. -1
    vous voyez, c'est cool.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2011, 02h57
  2. Apprendre à programmer avec Python exercices 4.2
    Par bellamy dans le forum Général Python
    Réponses: 5
    Dernier message: 15/10/2009, 15h53
  3. Apprendre à programmer avec Python exercices 5.14
    Par bellamy dans le forum Général Python
    Réponses: 7
    Dernier message: 02/08/2008, 11h03

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