Exercices python aide.

Frenzy -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je dois faire 2 exercices sur python, mais je n’y arrive pas et mon prof ne veut pas m’aider car apparemment ce sont des exercices notés.
Voici les exercices :
6- Écrire une fonction identique(l1, l2) qui renvoie un booléen indiquant si les éléments des deux listes sont identiques
Et
7- Écrire une fonction trouve(x, lst) qui renvoie la position de x dans la liste (la 1ère position est 0), et None si x n’est pas dans la liste.
• Écrire cette fonction sous forme récursive
Il faut utiliser les listes chaînées mais je ne vois pas où je peux les utiliser, j’ai essayé de faire une fonction en affichant juste les listes et avec un booléen juste afficher vrai ou faux mais ça ne marche pas, les listes ne sont pas définies alors que je les ai définies. si des personnes peuvent m’aider avec des explications cela serait vraiment
sympa.
Merci et Bonne journée.

11 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    0
    1. Frenzy
       
      Bonjour, donc je n’ai pas le droit de bénéficier d’aide sur mes exos ? Je ne demande à personne de me les résoudre, juste si des personnes seraient disponibles pour m’aiguiller et de m’aider a comprendre pour que je puisse moi même faire les exercices.
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour Frenzy,

    Si, tu as le droit, mais pour t'aiguiller, il faut qu'on voie d'abord ce que tu as fais, sinon, ca revient à te donner la solution toute cuite ...

    Tu nous dis que tu as fait des essais, fait nous voir le code et on te dira

    Quand on connait les listes Python, comparer 2 listes et trouver la position d'un élément dans une liste, ce sont les bases
    0
  3. Frenzy
     
    def identique(l1, l2):
    v = ”True“
    f = ”false"
    if l1 and l2 == list:
    return sorted(l1)==sorted(l2)
    if l1 != l2 :
    return (type(f))
    elif l1 == l2 :
    return (type(v))
    else:
    return (type(f))

    a = [1,2,3,4]
    b = [4,3,2,1]
    print(identique(a, b))

    Voilà ce que j’ai fais pour l’exercice 6
    0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Ok mais tu n'as pas utilisé les balises de code et on ne voit pas les indentations, important en Python:

    Reposte ton code, mode d'emploi ici:

    https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    Visuellement, quand tu aura validé ta réponse ça doit ressembler à ceci :

    def test():
        print('test')
    
    test()
    


    Au fait, est-ce que ton code fonctionne ?

    Moi, je ne pense pas et je vois déjà tes trucs à changer pour te guider vers la solution
    0
    1. Frenzy
       
      def identique(l1, l2):
      v = ”True“
      f = ”false"
      if l1 and l2 == list:
      return sorted(l1)==sorted(l2)
      if l1 != l2 :
      return (type(f))
      elif l1 == l2 :
      return (type(v))
      else:
      return (type(f))


      a = [1,2,3,4]
      b = [4,3,2,1]
      print(identique(a, b))


      et oui mon code n'a pas d'erreur mais n'affiche rien
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Frenzy
     
    je ne comprends pas pourquoi l'indentation ne marche pas
    0
  7. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    ok mais tu n'as pas mis les balises de code : regardes ton code il ne ressemble pas à mon exemple

    def test():
        print('test')
    
    test()


    Tu n'as pas lu le mode d'emploi ?
    0
    1. Frenzy
       
       def identique(l1, l2):
          v = "True"
          f = "false"
          if l1 and l2 == list:
              return sorted(l1)==sorted(l2)
          if l1 != l2 :
              return (type(f))
          elif l1 == l2 :
              return (type(v))
          else:
              return (type(f))
      
      
      a = [1,2,3,4]
      b = [4,3,2,1]
      print(identique(a, b))
      0
    2. Frenzy
       
      def identique(l1, l2):
          v = "True"
          f = "false"
          if l1 and l2 == list:
              return sorted(l1)==sorted(l2)
          if l1 != l2 :
              return (type(f))
          elif l1 == l2 :
              return (type(v))
          else:
              return (type(f))
      
      
      a = [1,2,3,4]
      b = [4,3,2,1]
      print(identique(a, b))
      0
  8. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Ben non, tu le vois bien toi -même quand tu valides ta réponse, ca doit ressembler à mon exemple avec les couleurs et tout

    Tu fais un copié/collé de ton code ici

    Tu sélectionnes tout le code à la souris, tu cliques la petite flèche vers le bas dans la barre d'icones au dessus, et tu sélectionne Python dans la liste

    Maintenant tu vois les balises < code python > et < /code > qui encadrent ton code
    et quand tu valides , tu le vois apparaitre comme sur mon exemple ...

    C'est simple, j'y arrive bien, moi
    0
    1. Frenzy
       
      def identique(l1, l2):
          v = "True"
          f = "false"
          if l1 and l2 == list:
              return sorted(l1)==sorted(l2)
          if l1 != l2 :
              return (type(f))
          elif l1 == l2 :
              return (type(v))
          else:
              return (type(f))
      
      
      a = [1,2,3,4]
      b = [4,3,2,1]
      print(identique(a, b))
      0
    2. Frenzy
       
      Il me semble que c'est bon
      0
  9. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    AAAAAAAAAAAAAAH ! Super

    Bon, 1er point: sais-tu que les mots clés True et False existent déjà en Python, donc pas besoin de définir
    v = "True" f = "false"

    Donc tu te rends compte maintenant que quand tu écris:
    return (type(f))

    tu retournes le type de la variable f
    or f est une string (une chaine de caractères), donc type(f) = <class 'str'>
    Ce n'est pas vraiment ce que tu veux ...
    Ce que tu veux, c'est retourner True ou False, donc:
    return(True)

    ou bien
     return(False)

    OK ?

    Ensuite, lorsque tu écris :
    if l1 and l2 == list:

    tu penses faire quoi exactement ?

    J'attend ta réponse à mes questions pour te parler de la suite...
    0
    1. Frenzy
       
      ok merci, j'ai donc compris pk il m'affiche class str et pour if l1 and l2 == list: c'était que pour le programme ne fonctionne que si les listes sont des listes enfin, qu'elles soient bien faites
      0
  10. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    tu ne répond pas a ma question :

    Ensuite, lorsque tu écris :
    if l1 and l2 == list:

    tu penses faire quoi exactement ?

    pour moi, ce n'est pas bon (ce n'est pas ce que tu crois)
    J'ai testé ton code il ne passe jamais dans le cas
        if l1 and l2 == list:
            return sorted(l1)==sorted(l2)


    Par contre il passe dans:
        if l1 != l2 :
            return (type(f))

    puisque les 2 listes sont différentes, et forcement il retourne <class 'str'>

    Il faudrait écrire:
        if l1 != l2 :
            return (False)


    Mais répond moi pour ma 1ere question .... (je vois ce que tu voulais faire, mais ce n'est pas comme ça qu'on l'écrit)
    0
  11. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Hello Frenzy,

    Alors, as-tu trouvé ce qui ne va pas ?
    0
  12. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Hello Frenzy,

    if l1 and l2 == list:


    ce n'est pas comme ça que tu testera si l1 et l2 sont des listes !
    list est un type d'objet, il est égal à <class 'list'>
    l1 and l2 est une expression booléenne, elle est égale à l2
    donc if l1 and l2 ne sera jamais égal à list

    Il faudrait plutôt faire ça:

    if(type(l1) == list and type(l2) == list):
    0