Exercices python aide.

Fermé
Frenzy - Modifié le 16 nov. 2020 à 15:33
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 18 nov. 2020 à 13:29
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.
A voir également:

11 réponses

yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
16 nov. 2020 à 15:52
0
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
16 nov. 2020 à 16:14
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
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 nov. 2020 à 17:20
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je ne comprends pas pourquoi l'indentation ne marche pas
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 nov. 2020 à 18:19
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
 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
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 nov. 2020 à 19:03
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
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
Il me semble que c'est bon
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 nov. 2020 à 19:46
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
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 nov. 2020 à 20:31
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
17 nov. 2020 à 13:02
Hello Frenzy,

Alors, as-tu trouvé ce qui ne va pas ?
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 18 nov. 2020 à 13:30
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