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 :

[Exercices] Sélection des meilleurs exercices corrigés pour apprendre la programmation Python


Sujet :

Python

  1. #1
    Community Manager

    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    3 517
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2015
    Messages : 3 517
    Points : 9 281
    Points
    9 281
    Par défaut [Exercices] Sélection des meilleurs exercices corrigés pour apprendre la programmation Python
    Chers membres du club,

    J'ai le plaisir de vous annoncer la création de la page des meilleurs exercices pour apprendre la programmation Python


    Vous trouverez les meilleurs exercices, accessibles aux débutants, avec des énoncés clairs et complets suivis de solutions détaillées. Pour l'instant, la page contient une série d'exercices simples abordant les notions de généralité, les boucles, les fonctions prédéfinies, les interfaces graphiques (Tkinter) ou encore les fichiers; bien sûr, d'autres exercices sont en cours d'élaboration.

    Vos contributions sont les bienvenues, par conséquent si vous souhaitez participer à l'enrichissement de cette page, vous pouvez :

    • soit soumettre votre proposition directement sur la plateforme ;
    • soit poster un message dans ce présent fil.


    Bonne lecture

    Retrouvez les meilleurs cours et tutoriel pour apprendre la programmation Python
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre éprouvé
    Avatar de Hominidé
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    juin 2018
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juin 2018
    Messages : 634
    Points : 1 053
    Points
    1 053
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Remarques:
    Il me semble qu'il aurait été juste d'utiliser l'expression "Voir une solution" que "Voir la solution".
    Lorsque je lis:
    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
    # Insertion d'un caractère d'espacement dans une chaîne 
     
    # Chaîne fournie au départ : 
    ch = "Véronique" 
    # Caractère à insérer : 
    cr = "*" 
    # Le nombre de caractères à insérer est inférieur d'une unité au 
    # nombre de caractères de la chaîne. On traitera donc celle-ci à 
    # partir de son second caractère (en omettant le premier). 
    lc = len(ch)	# nombre de caractères total 
    i = 1	     # indice du premier caractère à examiner (le second, en fait) 
    nch = ch[0]    # nouvelle chaîne à construire (contient déjà le premier car.) 
    while i < lc: 
      nch = nch + cr + ch[i] 
      i = i + 1 
    # Affichage : 
    print(nch)
    je me dis que la réponse n'apprend pas la programmation python mais juste quelques notions d'algorithmie.
    Devrait figurer comme solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("*".join('véronique'))
    pathlib, poetry, importlib_ressources...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    19 597
    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 : 19 597
    Points : 33 861
    Points
    33 861
    Par défaut
    Salut,

    Citation Envoyé par Hominidé Voir le message
    Il me semble qu'il aurait été juste d'utiliser l'expression "Voir une solution" que "Voir la solution".
    Le code qu'on va écrire dépend du Python que l'on connaît.

    Lorsqu'il s'agit d'exercices trouvés dans des tutos (comme c'est ici le cas pour la majorité des exercices proposés), le but de l'exercice sera d'exercer algorithmique, programmation et la pratique des constructions du langage montrées dans le chapitre correspondant (et les chapitres précédents).

    Il est clair qu'on ne peut pas juger d'une solution en dehors du contexte (le cours et le chapitre pour lequel il est proposé). Et la plupart des cours donnent déjà une correction à la plupart des exercices proposés.

    Ce genre de tuto. a un intérêt plus que limité.

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

  4. #4
    Membre éprouvé
    Avatar de Hominidé
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    juin 2018
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juin 2018
    Messages : 634
    Points : 1 053
    Points
    1 053
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Ce genre de tuto. a un intérêt plus que limité.

    - W
    Je constate aussi des réponses écrites pour python2, ce qui risque de bloquer un débutant des premières heures.
    pathlib, poetry, importlib_ressources...

  5. #5
    Membre expérimenté
    Profil pro
    programmeur du dimanche
    Inscrit en
    novembre 2003
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2003
    Messages : 387
    Points : 1 506
    Points
    1 506
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    ...
    je me dis que la réponse n'apprend pas la programmation python mais juste quelques notions d'algorithmie.
    Devrait figurer comme solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("*".join('véronique'))
    Comme l'auteur est Gérard Swinnen, je suppose qu'il s'agit d'exercices pour des enfants de primaire pour l'enseignement d'informatique - mathématique.
    La solution proposée est anti-pythonique et très lente, mais elle est facile à comprendre pour des enfants.

    Pour apprendre le python pour quelqu'un ayant déjà fait de l'algorithmie et de préférence ayant des notions d'informatique, le mooc python de l'INRIA sur fun mooc est très bien.

  6. #6
    Expert confirmé Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    mars 2014
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : mars 2014
    Messages : 1 467
    Points : 5 669
    Points
    5 669
    Par défaut
    Il s'agit d'un wiki spécial collégien qui ont des TI83 pour programmer en python. Très bon tuto.
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  7. #7
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 640
    Points : 3 470
    Points
    3 470
    Par défaut
    Salut,

    Utiliser une boucle classique ce n'est pas "pytonique" ?

    Au fait la fonction "join" n'est pas spécifique à python, me semble-t-il...

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    19 597
    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 : 19 597
    Points : 33 861
    Points
    33 861
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Utiliser une boucle classique ce n'est pas "pytonique" ?
    Il n'y a rien de "pythonique" dans la construction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lc = len(ch)	# nombre de caractères total 
    i = 1	     # indice du premier caractère à examiner (le second, en fait) 
    nch = ch[0]    # nouvelle chaîne à construire (contient déjà le premier car.) 
    while i < lc: 
      nch = nch + cr + ch[i] 
      i = i + 1
    mais il faut bien commencer par là lorsqu'on débute (en programmation).

    Citation Envoyé par Beginner. Voir le message
    Au fait la fonction "join" n'est pas spécifique à python, me semble-t-il...
    Les chaines de caractères sont un des types de base de la plupart des langages. Et c'est comme çà depuis le début des ordinateurs et de la programmation.
    Tout ce temps a permis aux programmeurs de définir les opérations "utiles": celles qui faudrait coder (soi même) si elles n'était pas incluses dans les bibliothèques de base du langage.
    Du coup, on retrouve les mêmes partout...

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

  9. #9
    Expert confirmé Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    mars 2014
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : mars 2014
    Messages : 1 467
    Points : 5 669
    Points
    5 669
    Par défaut
    Bon PHP ce doit être fait. Au tour de Python pour l'exhaustivité des algorithmes : juste python 3. On bourre toujours dans le boot tout ce qu'on sait de python.
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  10. #10
    Membre expérimenté
    Profil pro
    programmeur du dimanche
    Inscrit en
    novembre 2003
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2003
    Messages : 387
    Points : 1 506
    Points
    1 506
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Salut,
    Utiliser une boucle classique ce n'est pas "pytonique" ?
    C'est mieux si on peut les éviter.

    En python string n'est pas une suite de caractères binaires comme en c. C'est un objet immuable : on ne peut modifier la string. ça signifie au niveau machine qu'à chaque itération de la boucle, une nouvelle chaîne est allouée, et une autre est déréférencée en attendant que le garbage collector la nettoie.

    De plus, les boucles classiques à la c sont lentes en python par rapport à toutes les autres méthodes (itérateurs, compréhensions de liste), sans compter le risque d'erreur sur la condition de fin de boucle.

    "".join() est clairement la meilleure solution, car on appelle une fonction de la librairie standard écrite en c optimisé, on ne pourra que difficilement faire mieux.

    Toutes proportions gardées, c'est juste une question de style et de millisecondes.

  11. #11
    Community Manager

    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    3 517
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2015
    Messages : 3 517
    Points : 9 281
    Points
    9 281
    Par défaut
    Chers membres du club,

    Suite à vos remarques concernant les solutions proposées, des dispositions ont été prises pour répondre aux préoccupations de tous. Ainsi, une première revue est en cours pour :

    • proposer une solution en Python 3 pour celles initialement proposées en Python 2;

    • corriger l'interface pour que plusieurs solutions puissent être proposées à chaque exercice.


    Merci à tous pour vos pertinentes remarques.

    Retrouvez les meilleurs cours et tutoriel pour apprendre la programmation Python
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  12. #12
    Membre éprouvé
    Avatar de Hominidé
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    juin 2018
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juin 2018
    Messages : 634
    Points : 1 053
    Points
    1 053
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    exercice: Traitement dans un fichier
    Je lis:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    # Triplement des espaces dans un fichier texte. 
    # Ce script montre également comment modifier le contenu d'un fichier 
    # en le transférant d'abord tout entier dans une liste, puis en 
    # ré-enregistrant celle-ci après modifications 
     
    def triplerEspaces(ch): 
      "fonction qui triple les espaces entre mots dans la chaîne ch" 
      i, nouv = 0, "" 
      while i < len(ch): 
          if ch[i] == " ": 
          nouv = nouv + "	" 
          else: 
          nouv = nouv + ch[i] 
          i = i +1	   
      return nouv 
     
    NomF = input("Nom du fichier : ") 
    fichier = open(NomF, 'r+')	  # 'r+' = mode read/write 
    lignes = fichier.readlines()	    # lire toutes les lignes 
     
    n=0 
    while n < len(lignes): 
      lignes[n] = triplerEspaces(lignes[n]) 
      n =n+1 
     
    fichier.seek(0) 	    # retour au début du fichier 
    fichier.writelines(lignes)	  # réenregistrement 
    fichier.close()
    Remarque: Le code est mal indenté ...
    Perso, je proposerais plutôt comme solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def triplerEspaces(ch): 
      "fonction qui triple les espaces entre mots dans la chaîne ch" 
     
      return ch.replace(" ", "   ") 
     
    NomF = input("Nom du fichier : ")
    out = ""
    with open(NomF, 'r') as fichier:
        for ligne in fichier:
            print('ligne>', ligne)
            out = out+triplerEspaces(ligne)# 'r+' = mode read/write 
    with open(NomF, 'w') as newfichier:
        out.write(newfichier)
    Manifestement, une relecture s'impose. (Je peux y participer)
    pathlib, poetry, importlib_ressources...

  13. #13
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 302
    Points : 5 413
    Points
    5 413
    Par défaut
    Bonjour tout le monde.

    Concernant ces exercices, j'ai deux remarques liées à l'encodage.
    1. En Unicode, rien n'est simple. "*".join(ch) n'a le comportement attendu que si ch ne contient que des caractères dont chacun n'a qu'un seul point de codage. Mais ce n'est pas le cas général. Par exemple, il existe des points de codage qui se combinent avec d'autres. Par exemple, U+0301 ajoute un accent aigu à ce qui le précède.
    2. Quand on appelle open en mode texte sans renseigner l'argument encoding, l'encodage par défaut est celui du système. Ce n'est pas forcément une erreur, mais c'est quelque chose auquel il faut réfléchir explicitement. Si on oublie qu'il existe plusieurs encodages, on se retrouve avec des bogues comme ceux signalés dans la PEP 597, dont je recommande la lecture.


    Ce qui me dérange avec beaucoup de tutoriels, c'est qu'ils propagent une vision erronée auprès des étudiants comme quoi les chaînes de caractères sont des séquences faciles à manipuler. C'était effectivement simple à l'époque où les encodages privilégiés étaient l'ASCII et le Latin-1 (ce qui excluait beaucoup de langues), mais cette époque est révolue.

    De mon point de vue, quand on enseigne les chaînes de caractères aux étudiants, il faut aborder la complexité qui va avec. Par exemple, en Rust, c'est ce que fait le livre The Rust Programming Language dans le chapitre Storing UTF-8 Encoded Text with Strings (lien normal) (lien lié à un commit).

    Pour enseigner des algorithmes simples sur des séquences, on peut manipuler des listes d'entiers (exemple : inverser une liste d'entiers). Les listes d'entiers, c'est plus simple : il n'y a pas besoin de se soucier de l'encodage.

  14. #14
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 640
    Points : 3 470
    Points
    3 470
    Par défaut
    Salut,

    @wiztricks et Fagus : merci pour vos réponses ci-dessus...

    Sinon je pense que le mieux c'est de proposer plusieurs solutions, des premières solutions simples où l'on peut voir concrètement les différentes parties de l'algorithme (c'est bon pour l'apprentissage) et d'autres solutions plus spécifiques et plus efficaces et même là il peut y en avoir plusieurs, en avoir plusieurs cela reste instructif...

    Citation Envoyé par Laethy Voir le message
    • corriger l'interface pour que plusieurs solutions puissent être proposées à chaque exercice.
    Cela me semble une bonne idée...

    Citation Envoyé par Hominidé Voir le message
    Perso, je proposerais plutôt comme solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def triplerEspaces(ch): 
      "fonction qui triple les espaces entre mots dans la chaîne ch" 
     
      return ch.replace(" ", "   ") 
     
    NomF = input("Nom du fichier : ")
    out = ""
    with open(NomF, 'r') as fichier:
        for ligne in fichier:
            print('ligne>', ligne)
            out = out+triplerEspaces(ligne)# 'r+' = mode read/write 
    with open(NomF, 'w') as newfichier:
        out.write(newfichier)
    Oui bien vu pour la fonction replace.
    Pour la dernière ligne out.write(newfichier) il y a une inversion, tu voulais probablement écrire : newfichier.write(out).

    Sinon je proposerais une petite variante de ton code : au lieu de lire le fichier ligne par ligne et appliquer la fonction triplerEspaces sur chacune de ces lignes on pourrais lire le fichier en entier, c'est-à-dire remplacer cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open(NomF, 'r') as fichier:
        for ligne in fichier:
            print('ligne>', ligne)
            out = out+triplerEspaces(ligne)# 'r+' = mode read/write
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open(NomF, 'r') as fichier:
        out = triplerEspaces(fichier.read())

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    10 407
    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 : 10 407
    Points : 28 292
    Points
    28 292
    Billets dans le blog
    1
    Par défaut
    Salut
    Citation Envoyé par Beginner. Voir le message
    Sinon je proposerais une petite variante de ton code : au lieu de lire le fichier ligne par ligne et appliquer la fonction triplerEspaces sur chacune de ces lignes on pourrais lire le fichier en entier, c'est-à-dire remplacer cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open(NomF, 'r') as fichier:
        out = triplerEspaces(fichier.read())
    C'est brillant !!! Traiter tout le fichier comme une énorme et unique grosse chaine
    Mais (et crois moi que j'en suis le premier désolé) je pense que cette solution ne correspond pas à "l'esprit de l'exo" qui (pour ce que j'en ressens) me semble clairement fait pour apprendre au débutant comment découper un fichier en lignes, puis traiter ladite ligne. L'exo ici remplace un caractère mais demain ce pourrait être "extraire ujn champ" (ex csv) puis traiter ce champ et dans ce cas ta façon de faire ne conviendrait plus.

    Mais cela n'enlève rien à la valeur de ta proposition.
    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

  16. #16
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 640
    Points : 3 470
    Points
    3 470
    Par défaut
    Salut,
    Citation Envoyé par Sve@r Voir le message
    C'est brillant !!! Traiter tout le fichier comme une énorme et unique grosse chaine
    C'est vrai que dans certains cas la chaine pourrait être énorme mais je me suis dit que ce serait quand même plus rapide de procéder ainsi dans ce cas précis...

    Après c'est peut-être contraire à "l'esprit de l'exo" comme tu dis mais j'ai cru comprendre qu'on était parti pour proposer plusieurs solutions : des premières solutions simples où l'on peut voir concrètement les différentes parties de l'algorithme quitte à ce que cela soit moins efficace et d'autres solutions plus spécifiques et plus efficaces même dans le cas où elles seraient plus difficiles à comprendre pour un débutant dans un premier temps c'est bien qu'il sache que de telles solutions existent pour éventuellement les comprendre et les utiliser plus tard quand il passera au niveau supérieur...



    Citation Envoyé par Sve@r Voir le message
    Mais (et crois moi que j'en suis le premier désolé) je pense que cette solution ne correspond pas à "l'esprit de l'exo" qui (pour ce que j'en ressens) me semble clairement fait pour apprendre au débutant comment découper un fichier en lignes, puis traiter ladite ligne.
    Oui c'est bien possible d'ailleurs cela semble avoir été compris comme cela dans les solutions proposées : Traitement dans un fichier mais si on s'en tient juste à l’énoncé de l'exercice : "Écrivez un script qui recopie un fichier texte en triplant tous les espaces entre les mots." cela me semble ouvert à plusieurs interprétations...

    Après une solution de plus ça reste instructif et on peut toujours la zapper (qui peut le plus peut le moins).

    Citation Envoyé par Sve@r Voir le message
    L'exo ici remplace un caractère mais demain ce pourrait être "extraire ujn champ" (ex csv) puis traiter ce champ et dans ce cas ta façon de faire ne conviendrait plus.
    Effectivement tu as raison.

  17. #17
    Expert confirmé Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    mars 2014
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : mars 2014
    Messages : 1 467
    Points : 5 669
    Points
    5 669
    Par défaut
    x or y | x and y retournera toujours x. Cela peut-être utile pour retrouver x en fonction de y.

    edit : merci wiztricks
    if ((x or y | x and y) & (x or y & x and y))
    stdout x


    bon là ça marche mieux comme ou/et ?
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    19 597
    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 : 19 597
    Points : 33 861
    Points
    33 861
    Par défaut
    Citation Envoyé par marsupial Voir le message
    x or y | x and y retournera toujours x. Cela peut-être utile pour retrouver x en fonction de y.
    x or y | x and y se simplifie en x or y et si y = 1 impossible de savoir si x = 0 ou 1.

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

  19. #19
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    10 407
    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 : 10 407
    Points : 28 292
    Points
    28 292
    Billets dans le blog
    1
    Par défaut Exercices en Python avec corrigés
    Bonjour à tous

    L'équipe de Développez.com a décidé d'ouvrir une page dédiée à des exemples d'exercices Pythons avec corrigés. Les exercices proviennent des différents tutoriels qu'on trouve sur le site (ex. Swinnen), mais à partir de maintenant, des exercices proposés par des intervenants du forum.
    Par exemple :

    ...et d'autres à suivre encore.


    La page des exercices : https://python.developpez.com/exercices
    Cette page est encore à ses balbutiements, mais nous espérons l'étoffer au fil du temps. Bien entendu, tous les volontaires pour proposer de nouveaux exercices (+ corrigés !!!) seront les bienvenus.

    Chaque exercice se voit ensuite offrir généralement 3 solutions
    1. la première, assez classique, reprenant généralement les principes de l'algorithmique
    2. une seconde contenant quelques raccourcis de syntaxe en Python
    3. la dernière essayant d'offrir une solution full Python (on sait que ce n'est pas évident car Python est assez open dans sa syntaxe donc on a essayé de faire au mieux)


    Les exercices ont été relus, testés, vérifiées et repris les uns par les autres. Ont participé (par ordre alphabétique)

    Mais cette liste ne demande qu'à s'agrandir
    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

  20. #20
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 640
    Points : 3 470
    Points
    3 470
    Par défaut
    Salut,

    Merci à vous pour cette initiative.

    Comment peut-on proposer un exercice ?
    Est-il obligatoire de fournir les trois types de solutions que tu mentionnes ?
    Est-ce que certaines de ces solutions peuvent être éventuellement proposées par quelqu'un d'autre ?

Discussions similaires

  1. [Exercices] Sélection des meilleurs exercices corrigés pour apprendre l'algorithmique
    Par Malick dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 16/05/2019, 04h16
  2. Réponses: 2
    Dernier message: 06/07/2018, 23h45
  3. Réponses: 13
    Dernier message: 12/12/2008, 09h36

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