Problème avec fonction et return
Résolu/Fermé
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
-
24 oct. 2020 à 00:52
Utilisateur anonyme - 24 oct. 2020 à 11:43
Utilisateur anonyme - 24 oct. 2020 à 11:43
A voir également:
- Problème avec fonction et return
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction remplacer word - Guide
11 réponses
Utilisateur anonyme
24 oct. 2020 à 09:22
24 oct. 2020 à 09:22
Bonjour
Pour poster ton code, il faut faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Pour poster ton code, il faut faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
Modifié le 24 oct. 2020 à 10:56
Modifié le 24 oct. 2020 à 10:56
#JEU DU PENDU
from tab_util import* mot='casserole' mot1=list(mot) tenta=0 mot_c=len(mot)*['_'] def test_lettre(mot, mot_c, tenta): nbr_lettre=0 tenta_f=tenta lettre=input('Quelle lettre ?') for i in range(len(mot)): if lettre==mot[i]: nbr_lettre=nbr_lettre+1 mot_c[i]=mot[i] if nbr_lettre==0: print('La lettre ', lettre, 'n\'est pas dans le mot') print(" ".join(mot_c)) tenta_f=tenta_f+1 else: print('La lettre', lettre, 'est ', nbr_lettre, 'fois dans le mot') print(" ".join(mot_c)) return [mot_c, tenta_f] while tenta<10: test_lettre(mot1, mot_c, tenta) tenta=tenta+test_lettre(mot1, mot_c, tenta)[1] print(tenta) mot_c=test_lettre(mot1, mot_c, tenta)[0] print(mot_c)
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
>
Utilisateur anonyme
24 oct. 2020 à 10:57
24 oct. 2020 à 10:57
Oui c'est rectifié (normalement ^^') merci !
Utilisateur anonyme
24 oct. 2020 à 11:11
24 oct. 2020 à 11:11
bon voyons ce bout de code
Si on analyse ce que ça fait
Vois tu ce qui cloche?
while tenta<10: test_lettre(mot1, mot_c, tenta) #ici tu lances une foi ta fonction, sans récupérer le résultat tenta=tenta+test_lettre(mot1, mot_c, tenta)[1] #ici tu la relances en récupérant seulement l'élément '1', et tu additionnes cet élément à tenta print(tenta) mot_c=test_lettre(mot1, mot_c, tenta)[0] #et là tu la relances une troisième fois print(mot_c)
Si on analyse ce que ça fait
on démarre la boucle, tenta vaut 0 Teste la lettre 'd', c'est pas bon, mais on n'en tient pas compte Teste la lettre 'z', c'est pas bon, dans la fonction tentaF est passé de 0 à 1, donc tenta = tenta + 1 = 1 On affiche tenta Teste la lettre 'y', c'est pas bon, on affiche la liste des caractères Deuxième tour de boucle, tenta vaut 1 même après trois erreurs Teste la lettre 'x', c'est pas bon, mais on n'en tient pas compte Teste la lettre 'w', c'est pas bon, dans la fonction tentaF est passé de 1 à 2, donc tenta = tenta + 2 = 3 On affiche tenta Teste la lettre 'm', c'est pas bon, on affiche la liste des caractères etc...
Vois tu ce qui cloche?
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
24 oct. 2020 à 11:18
24 oct. 2020 à 11:18
Je refais 3 fois la fonction, et il faudrait que je récupère les deux valeurs en la faisant qu'une seule fois ?
mais je fais quand même deux fois la fonction ^^'
je pense voir le problème, mais pas la solution :/
mot_c, tenta=test_lettre(mot1, mot_c, tenta)[0], test_lettre(mot1, mot_c, tenta)[1]
mais je fais quand même deux fois la fonction ^^'
je pense voir le problème, mais pas la solution :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
24 oct. 2020 à 11:20
24 oct. 2020 à 11:20
Si je te demande de calculer le cosinus d'une variable A et de mettre le résultat retourné dans une variable B, quel code vas tu écrire?
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
24 oct. 2020 à 11:24
24 oct. 2020 à 11:24
Euh, j'me rends compte que mes bases sont (vraiment) bancales ^^'
from math import* def cosinus(A): return cos(A) B=cosinus(A)
Utilisateur anonyme
24 oct. 2020 à 11:26
24 oct. 2020 à 11:26
Ok, donc là ta fonction retourne un double que tu stockes dans une variable qui sera de fait un double.
Revenons à test_lettre, cette fonction retourne une liste que peux tu en faire?
Revenons à test_lettre, cette fonction retourne une liste que peux tu en faire?
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
24 oct. 2020 à 11:29
24 oct. 2020 à 11:29
while tenta<10: result=test_lettre(mot1, mot_c, tenta) mot_c=result[0] tenta=result[1] print(tenta) print(mot_c)
Ca doit être bon maintenant ?
Utilisateur anonyme
24 oct. 2020 à 11:31
24 oct. 2020 à 11:31
Ca doit être bon maintenant ?
A toi de me le dire, tu as essayé?
M.H_84
Messages postés
10
Date d'inscription
samedi 24 octobre 2020
Statut
Membre
Dernière intervention
24 octobre 2020
24 oct. 2020 à 11:33
24 oct. 2020 à 11:33
Ca m'a l'air de marcher ! Merci beaucoup ! (surtout de m'avoir guidé et pas donné directement la solution :D )
Utilisateur anonyme
24 oct. 2020 à 11:42
24 oct. 2020 à 11:42
C'est pas fini.
Cette façon de faire est valable dans tous les langages, si une fonction retourne une collection (tableau, liste, etc....) pour ne pas l'appeler n fois, il faut stocker le résultat dans une seconde collection et utiliser cette seconde collection par la suite.
Mais Python permet autre chose, si tu sais que la collection retournée contient n élément, tu peux directement affecter le résultat à n variables
C'est une règle ici, on ne fait pas le travail des autres à leur place et s'ils ne jouent pas le jeu, on ne les aide pas
Cette façon de faire est valable dans tous les langages, si une fonction retourne une collection (tableau, liste, etc....) pour ne pas l'appeler n fois, il faut stocker le résultat dans une seconde collection et utiliser cette seconde collection par la suite.
Mais Python permet autre chose, si tu sais que la collection retournée contient n élément, tu peux directement affecter le résultat à n variables
def Truc(): Valeur1 = "test 1" Valeur2 = "test 2" return Valeur1, Valeur2 #return [Valeur1, Valeur2] et ça marche avec ou sans les crochets resutat1, resutat2 = Truc() print(resutat1) print(resutat2)
surtout de m'avoir guidé et pas donné directement la solution :D
C'est une règle ici, on ne fait pas le travail des autres à leur place et s'ils ne jouent pas le jeu, on ne les aide pas