Exercices python aide.

Signaler
-
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
-
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

Messages postés
13159
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2020
732
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.
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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
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
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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
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
je ne comprends pas pourquoi l'indentation ne marche pas
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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 ?
 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))
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))
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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
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))
Il me semble que c'est bon
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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...
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
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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)
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
Hello Frenzy,

Alors, as-tu trouvé ce qui ne va pas ?
Messages postés
582
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 novembre 2020
78
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):