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 :

comment guider un apprenti


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2019
    Messages : 20
    Par défaut comment guider un apprenti
    Bonsoir. Voici un pb que je viens juste de découvrir. Ce que je vous propose, si vous en avez le temps, c'est de me guider dans ma recherche, de telle sorte que je trouve le plus vite possible. Voici ce que je comprends : il y a besoin d'une fonction qui puisse être appelée pour tester les éléments d'une liste selon qu'ils sont des réponses vraies ou fausses à des fonctions du type : est un nombre premier,


    Ecrivez une fonction my_filter qui prend une liste lst et une fonction booléenne f en paramètres.
    Cette fonction renverra une nouvelle liste constituée des éléments de la liste lst pour lesquels la fonction f renvoie True.
    Note:
    Pour les tests, UpyLaB utilise les fonctions Python lambda. Cela permet de définir au moment même une fonction anonyme avec un ou plusieurs paramètres
    Ainsi :
    lambda e: isinstance(e, int)
    donne une fonction à un paramètre, qui teste si ce paramètre est de type entier.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par nipocham Voir le message
    Voici ce que je comprends : il y a besoin d'une fonction qui puisse être appelée pour tester les éléments d'une liste selon qu'ils sont des réponses vraies ou fausses à des fonctions du type : est un nombre premier
    Tout à fait... maintenant que vous avez compris, vous devriez pouvoir écrire un premier code et voir s'il fonctionne.

    Citation Envoyé par nipocham Voir le message
    c'est de me guider dans ma recherche, de telle sorte que je trouve le plus vite possible.
    Le but de ce genre d'exercice est de vous obliger à pratiquer la programmation: écrire quelques instructions, les lancer, comprendre les messages d'erreurs s'il y en a, vous poser des questions sur les instructions que vous avez écrites si vous n'obtenez pas le résultat attendu.


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

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2019
    Messages : 20
    Par défaut
    vous dites en somme qu'il faut se jeter à l'eau pour apprendre à nager. Et je serais d'un avis éloigné du vôtre. Une langue, si l'on veut l'apprendre, on doit s'en servir réellement, c'est l'idée de se jeter à l'eau. Seulement voilà : mieux on aura préparé méthodiquement les choses à faire et à ne pas faire, plus vite cela ira.
    Le peu que je vois de l'enseignement du python sur Internet, me parait mal foutu. On pourrait faire cela plus rationnellement, en perdant moins de temps à chercher.
    Tout cela est empirique. Des recettes que l'on applique au prix d'une longue pratique. Ou bien, la programmation d'un ordi est empirique ou bien elle est mathématique. Non ?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 078
    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 : 4 078
    Par défaut
    Bonsoir,

    On pourrait faire cela plus rationnellement, en perdant moins de temps à chercher.
    Ça va plus loin que ça, il faut chercher et tester. Beaucoup tester sur son interpréteur, sinon comment voir les résultats des codes que vous avez trouvé ou lu sur des forums.

    L'interpréteur permet de tester ligne par ligne des fonctions, ... et ces résultats vont rester en mémoire, car vous vous êtes donné le mal de chercher et avez pris le temps.

  5. #5
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut
    Salut, comme toi je débute

    regarde là, c'est un bon début
    http://python.jpvweb.com/python/mesr...id=est_premier

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par nipocham Voir le message
    vous dites en somme qu'il faut se jeter à l'eau pour apprendre à nager. Et je serais d'un avis éloigné du vôtre.
    la différence c'est que -en toute logique- ceux qui préconisent de te jeter à l'eau savent, eux, de quoi ils parlent...

    l'énoncé de ton problème est assez clair; tu dois écrire une fonction en python

    nous pour continuer de t'aider on attend que tu nous montre un début de code (histoire qu'on ait pas l'impression de faire le boulot à ta place gratos tandis que tu philosophes sur le bas coté par exemple)

    la dynamique est alors assez évidente... lance toi, code, montre ton code, et on t'aide à le corriger. dans ce sens (et ça fonctionne bien, promis ).

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Moi je me contente de lire l'énoncé:

    Ecrivez une fonction my_filter qui prend une liste lst et une fonction booléenne f en paramètres.
    Cette fonction renverra une nouvelle liste constituée des éléments de la liste lst pour lesquels la fonction f renvoie True.
    c'est écrit en français et il faut le traduire en instructions Python.

    Puisque c'est un exercice, on suppose que vous savez écrire une fonction, ce qu'est une liste, une boucle... et donc que vous êtes capable d'écrire un minimum de ce qui est demandé.
    Sinon il faut revoir les chapitres de votre tuto. qui présentent ces notions là.

    Après çà fonctionne (ou pas), vous avez des difficultés à traduire tel aspect,...et demander qu'on essaie de vous expliquer. Ce qui suppose que vous avez commencé à essayer de coder quelque chose.

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

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par nipocham Voir le message
    vous dites en somme qu'il faut se jeter à l'eau pour apprendre à nager.
    Exactement. D'ailleurs quand on apprend à nager, à un moment donné on de jette effectivement à l'eau.

    Citation Envoyé par nipocham Voir le message
    Le peu que je vois de l'enseignement du python sur Internet, me parait mal foutu.
    C'est un avis personnel. Qui provient soit
    • du fait que t'as peu cherché
    • du fait que, malgré ta recherche, t'as peu trouvé
    • du fait que tu t'es peu impliqué dans ce que tu as trouvé

    Dans le doute, je préfère penser que t'as cherché mais peu trouvé. Je te propose donc le Swinnen. C'est la référence en matière d'apprentissage Python. Suffit de taper "swinnen" et "python" dans ton moteur de recherche favori. C'est par exemple ce que j'ai utilisé quand j'ai voulu apprendre ce langage. Et tu verras que, en dehors de moi, il est recommandé dans tout ce forum. Mais un tuto ne permet d'apprendre que si on le lit et qu'on fait les exercices proposés.

    Citation Envoyé par nipocham Voir le message
    On pourrait faire cela plus rationnellement, en perdant moins de temps à chercher.
    Oui. C'est le but des exercices corrigés des tutoriels. Ils te permettent de faire le lien entre "problème X" et "façon de trouver la solution X" afin que de toi-même tu puisses ensuite faire le lien entre "problème Y" et "solution Y". Si par exemple un tuto t'apprend à compter les valeurs d'une liste (itérer et additionner), alors traiter une liste pour n'extraire que ce que la fonction renvoie True n'est pas beaucoup plus compliqué (itérer, envoyer à la fonction, tester le retour).

    Citation Envoyé par nipocham Voir le message
    Voici ce que je comprends : il y a besoin d'une fonction qui puisse être appelée pour tester les éléments d'une liste selon qu'ils sont des réponses vraies ou fausses à des fonctions du type : est un nombre premier,
    Commence alors par écrire la fonction est_premier(). Teste-là et reviens nous montrer ton code.
    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. #9
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2019
    Messages : 20
    Par défaut
    je vous remercie pour vos réponses.
    dès que j'aurai fini avec le mook que je fais, j'irai voir ce fameux Swinnen. Merci de ce conseil.
    le code, je l'ai trouvé vite, contrairement à un précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def my_filter(m,f):
            z=[]
            for e in m:
                if f(e)==True:
                    z.append (e)
            return z
    où ai-je ici des pb de compréhension ? la boucle for dit que pour chaque e de la liste, si f(e) répond True, alors la liste z sera augmenté de cette variable e.
    je me demande ceci : un boucle for fonctionne nécessairement avec une variable e et un "in" qui la place nécessairement dans un contenant ?

  10. #10
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2019
    Messages : 20
    Par défaut problème mal résolu
    voilà un problème avec une solution très moche, faite pour convenir à l'exerciseur :
    Enoncé
    On se donne une liste qui encode une séquence. Chaque élément de cette liste est un tuple de deux éléments: le nombre de répétitions successives de l'élément dans, et l'élément lui-même. Les éléments successifs répétés forment la séquence
    Ecrivez une fonction décompresse, qui reçoit une telle liste en paramètre et renvoie la séquence sous forme d'une nouvelle liste.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    def decompresse(l):
        z = []
        for v in l:
            x = v[0]
            y = v[1]
            y = str(y)
            if y == 'b':
                c = 'b' * 4
                z.append(c)
            if y == 'j':
                c = 'j' * 3
                z.append(c)
            if len(y) == 1 and y != 'j' and y != 'b':
                c = (",".join(x * y))
                z.append(c)
            if len(y) > 1:
                c = y * x
                z.append(c)
     
        l2 = []
        for n in z:
            s = n.split(',')
            if len(s) <0:
                try:
                    s = map(int, s)
                except:
                    pass
                l2.extend(s)
            if len(s) > 1:
                try:
                    s = map(int, s)
                except:
                    pass
                l2.extend(s)
            else:
                ln = len(n)
                li = 1
                while True:
                    base = n[0:li]
                    for i in range(li, ln, li):
                        if n[i:i + li] != base:
                            li += 1
                            break
                    else:
                        break
                l2.extend(n[i:i + li] for i in range(0, ln, li))
        return l2
    Ce code, m'a pris un temps fou. Sans Bistouille, j'y serais encore.
    Mais ce qui vient de Bistouille m'est obscur : d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     z=['11111', 'bonjourbonjour', 'bbbb']
     l2 = []
        for n in z:
            s = n.split(',')
            if len(s) <0:
                try:
                    s = map(int, s)
                except:
                    pass
                l2.extend(s)
    pour tout n de z, s est un --?--- issu de la séparation de n, si la longueur de n est < 0 , try (…?): s est un ….?...map ….?....(entier, s), except ….?....pass ….?....j'accrois l2 de s

Discussions similaires

  1. Flash => Comment guider un masque?
    Par whyle62 dans le forum Flash
    Réponses: 1
    Dernier message: 13/04/2007, 08h17
  2. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Réponses: 7
    Dernier message: 01/05/2002, 20h23
  5. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29

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