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 :

Écrire une fonction my_insert


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Par défaut



    j'ai écrit ça comme code mais ça ne marche pas :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    n=int()
    def my_insert(liste):
        if type(n) != int: return None 
         liste.append(n)
         liste.sort()

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

    Si vous racontez:
    Citation Envoyé par Prada1020 Voir le message
    my_insert qui reçoit comme premier paramètre une liste d’entiers relatifs triés par ordre croissant et comme deuxième paramètre un entier relatif n, et qui renvoie une liste correspondant à la liste reçue
    et que vous écrivez:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    n=int()
    def my_insert(liste):
        if type(n) != int: return None 
         liste.append(n)
         liste.sort()
    vous devriez vous rendre compte qu'il n'y a ni de deuxième paramètre ni de renvoi d'une liste.

    Citation Envoyé par Prada1020 Voir le message
    j'ai écrit ça comme code mais ça ne marche pas :/
    Votre code devrait ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def my_insert(liste, n):
          ...
          return liste
    j'ai bien deux paramètre et çà retourne une liste.
    Reste à remplacer les ... par des instructions qui vont insérer n dans la liste.

    Et si on vous dit que liste est une liste d’entiers relatifs triés par ordre croissant, c'est qu'on vous demande d'écrire une boucle qui va parcourir la liste pour trouver le premier élément plus grand que n pour insérer n avant cet élément et traiter les cas limites où cet élément est le premier ou le dernier de la liste.

    Le but de l'exercice est de montrer que vous savez écrire une boucle, comparer, et un minimum de choses sur les listes. Si vous utilisez .sort, çà marche mais ce n'est pas ce qu'on vous demande.

    Déjà poster un code qui essaie de faire le boulot qu'on vous demande de faire.... Et si le code ne fonctionne pas essayez de montrer que vous avez un peu réfléchi à ce que vous avez écrit et essayé de comprendre ce qui ne se passe pas comme attendu.

    C'est la rédactio, d'une petite histoire dans laquelle vous racontez que si on appelle my_insert avec liste contenant ... et n ayant pour valeur ... çà retourne ... alors qu'on attend ...
    Le nom savant de cette petite histoire est "description du problème".

    Puis comme vous avez un peu réfléchi à ce que le code de my_insert fonctionne, il y a un soucis entre ce que vous pensiez avoir compris et le résultat obtenu (sinon vous auriez pu le corriger vous même sans venir râler ici).

    L'un dans l'autre, vous réaliser qu'avant de venir demander de l'aide, il vous faut montrer que vous avez raisonnablement bossé et non juste poster 3 lignes de code qui ne ressemble à rien dans l'espoir qu'on vous débarrasse d'un boulot qui ne semble pas vous intéresser (et moi/nous encore moins que vous).

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

  3. #3
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Par défaut Écrire une fonction my_insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n= int()
    def my_insert(liste,n):
        if type(n) != int:
            return None
     
        liste.append(n)
        liste.sort()
        return liste
    La première partit du code avec None fonctionne mais quand j'essaye de faire la deuxième partit je reçoit ça :
    avec lst = [1,5,78]:
    my_insert(lst,39) ne donne pas le bon résultat
    (mauvais return ou modifie lst)

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

    Citation Envoyé par Prada1020 Voir le message
    La première partit du code avec None fonctionne mais quand j'essaye de faire la deuxième partit je reçoit ça :
    Relisez votre code et essayer d'imaginer ce que va faire l'ordinateur/Python lorsqu'il exécute les instructions que vous lui avez demandé.
    On part de my_insert(lst,39).
    Ce qui appelle la fonction my_insert avec les arguments liste= lst et n=39.
    On arrive donc à la première instruction de la fonction if n != int: qui teste la condition n != int.
    Lancez l'interpréteur Python pour voir ce qu'il en fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> 39 != int
    True
    >>>
    Python évalue la condition à Vrai et donc retourne None (au lieu d'une la liste triée attendue).

    Donc la vraie question est de savoir qu'est ce que vous aviez en tête en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if n != int:
            return None
    Et tout le boulot qui est de relire votre code en se mettant à la place de Python pour l'exécuter "à la main" et comprendre ce qu'il va faire des instructions que vous lui demandez d'exécuter fait partie de votre apprentissage.
    note: si vous devez faire un devoir de math ou de français, vous vous relisez pour vous assurer que vos phrases sont bien construites et que le lecteur pourra comprendre ce que vous lui racontez. Là, c'est pareil, il faut apprendre à vous relire pour comprendre ce que Python fait (ou fera).

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Prada1020 Voir le message
    Citation Envoyé par wiztricks Voir le message
    On arrive donc à la première instruction de la fonction if n != int: qui teste la condition n != int.
    Le plus marrant, c'est que la première version (if type(n) != int), elle, fonctionnait sur ce point (même si ce point n'est à priori pas demandé dans l'énoncé). Sans déconner quoi, tu es arrivé avec un code à 2 ronds et wiztricks te dit qu'il y a un souci sur la partie "insertion". Qu'est-ce que tu es allé modifier alors cette partie qui fonctionnait ?

    Citation Envoyé par Prada1020 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def my_insert(liste,n):
        liste.append(n)
        liste.sort()
        return liste
    Tu as bien conscience que, même si ça fonctionne, ce n'est pas ce que le prof te demande ?

    Citation Envoyé par Prada1020 Voir le message
    n=int()
    Quel est le but de cette instruction ?

    Citation Envoyé par Prada1020 Voir le message
    La première partie du code avec None fonctionne mais quand j'essaye de faire la deuxième partie je reçois ça
    C'est pas parce que tu es dans un forum de prog qu'il faut oublier le français. Le français n'est pas que un truc fait pour te gonfler, c'est aussi un truc pour se faire comprendre. Et il est donc tout aussi utile en prog.
    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. #6
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Par défaut Écrire une fonction my_insert
    je vous est peut-être pas envoyer l’annoncé en entier

    Écrire une fonction my_insert qui reçoit comme premier paramètre une liste d’entiers relatifs triée par ordre croissant et comme deuxième paramètre un entier relatif n, et qui renvoie une liste correspondant à la liste reçue, mais dans laquelle le nombre n a été inséré à la bonne place.
    La liste donnée en paramètre ne doit pas être modifiée par votre fonction.

    Vous pouvez supposer que le premier paramètre sera bien une liste triée d’entiers, mais si le deuxième paramètre n’est pas du bon type, la fonction retourne None.

  7. #7
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Par défaut Écrire une fonction my_insert
    et là on revient avec mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n= int()
    def my_insert(liste,n):
        if type(n) != int:
            return None
     
        liste.append(n)
        liste.sort()
        return liste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Écrire une fonction paramétrée ramenant les données numériques d'une table
    Par morobaboumar dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/12/2018, 09h53
  2. Comprendre comment écrire une fonction
    Par bo_yoyo dans le forum Débuter
    Réponses: 10
    Dernier message: 11/05/2017, 15h18
  3. Réponses: 4
    Dernier message: 04/10/2015, 11h04
  4. écrire une fonction comme first
    Par elliott dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/07/2007, 07h52
  5. [fonction d'Ackermann] Écrire une fonction récursive
    Par java+ dans le forum Mathématiques
    Réponses: 5
    Dernier message: 19/06/2007, 01h14

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