Exercices python aide.
Frenzy
-
Phil_1857 Messages postés 1883 Date d'inscription Statut Membre Dernière intervention -
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.
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
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
-
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 -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
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 ? -
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 -
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 bienreturn(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... -
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 casif 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) -
Hello Frenzy,
Alors, as-tu trouvé ce qui ne va pas ? -
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):