Python return.
Joseph
-
Jithel Messages postés 843 Date d'inscription Statut Membre Dernière intervention -
Jithel Messages postés 843 Date d'inscription Statut Membre Dernière intervention -
Salut,
Voila j'ai une petite question, j'ai une fonction qui prend en entrée un a,b et une grille qui est une liste, bref
au début ces valeurs sont 2,6.
Ensuite dans la fonction, je vérifie à la fin que ces valeurs on bien changé : print(a,b) ---> 1,6
donc jusque la tout est bon.
Je retourne donc a,b
return(a,b,grille)
puis je reprint a,b pour vérifier.
print(a,b) ----> 2,6
le problème c'est que ça me retourne les anciennes valeur je ne comprend pas pourquoi.
Si vous avez une idée merci de m'aider.
ma fonction est dans un autre fichier python, mais je l'utilise avec le from … import *
Voila j'ai une petite question, j'ai une fonction qui prend en entrée un a,b et une grille qui est une liste, bref
au début ces valeurs sont 2,6.
Ensuite dans la fonction, je vérifie à la fin que ces valeurs on bien changé : print(a,b) ---> 1,6
donc jusque la tout est bon.
Je retourne donc a,b
return(a,b,grille)
puis je reprint a,b pour vérifier.
print(a,b) ----> 2,6
le problème c'est que ça me retourne les anciennes valeur je ne comprend pas pourquoi.
Si vous avez une idée merci de m'aider.
ma fonction est dans un autre fichier python, mais je l'utilise avec le from … import *
Configuration: Windows / Edge 17.17134
A voir également:
- (Function(){css.removeclass(document.body,%20'profile_two_columns'); tab_controller.changepage("photos");})()
- Citizen code python avis - Accueil - Outils
- Zuma return - Télécharger - Jeux vidéo
- \R python ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
2 réponses
Tu peux publier un peu plus de code ? Je comprends le problème mais je ne sais pas vraiment comment tu arrives à ce résultat. Fais un copier / coller de ton code dans les balises Python du forum (bouton <> du menu d'édition puis Python).
def mouvement(a,b,grille): #ici a=2 et b= 6 bouger=False while bouger!= True: print("vous allez choisir vers ou déplacer votre pion") if b>0 and a>1 and b<8 and a<10:
ici il y a plein de condition mais du coup qui fonctionne
print(a,b) # a=1 b=2 return(a,b,grille)
from affi import * from mouve import * grille=['[[ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ]]',[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],[['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],],[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],[['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],],[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],[['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],['○'],],[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],[['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],['◙'],],[[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' '],[' ']],] bouger=False joueur=1 Tour=0 while Tour!=20: AffichageGrille(grille) pions=False while pions!=True: a=int(input("Veuillez selectionner l'ordonné du pion :")) b=int(input("Veuillez selectionner l'abscisse du pion :")) print (grille[a][b]) pions=SelectionDuPion(joueur,grille,a,b) print("Le pion que vous avez selectionner et le pion en :","(",a,",",b,")") mouvement(a,b,grille) print("vous avez déplacer votre pion en",a,b) #le résultat afficher est 2,6 if joueur==1: joueur=2 elif joueur==2: joueur=1 Tour+=1
je n'ai pas mis dans le code la fonction afficher qui sert juste a print le grille ni sélection du pion car elle fonctionne assez bien. Si cela peut vous aidez dans la compréhension.
Alors c'est pas facile à comprendre mais pour la solution la plus simple à implémenter je dirais :
Pour l'explication : quand tu définis une variable a, b et grille dans ton code et que tu passes en paramètre d'une fonction ces valeurs, ce qu'il se passe c'est que Python duplique ces variables pour les exploiter localement à ta fonction puis les supprime. Bien que les paramètres de ta fonction et le nom de tes variables soient identiques, tu pourrais très bien définir ta fonction mouvement comme suit :
ça aurait le même effet (en veillant à remplacer a,b et grille par param1, param2 et param3 dans ta fonction mouvement).
La ligne global permet de dire à Python : les variables que j'utilise dans ma fonction nommées a, b et grille sont celles définies en dehors de la fonction. De ce fait, effectue les modifications sur celles-ci directement.
Une autre solution serait de faire :
def mouvement(): # en réalité, tu n'as pas besoin de ces paramètres # Ajouter la ligne suivante au début de la fonction global a, b, grille # … # Tu peux enlever le return
Pour l'explication : quand tu définis une variable a, b et grille dans ton code et que tu passes en paramètre d'une fonction ces valeurs, ce qu'il se passe c'est que Python duplique ces variables pour les exploiter localement à ta fonction puis les supprime. Bien que les paramètres de ta fonction et le nom de tes variables soient identiques, tu pourrais très bien définir ta fonction mouvement comme suit :
def mouvement(param1, param2, param3): # …
ça aurait le même effet (en veillant à remplacer a,b et grille par param1, param2 et param3 dans ta fonction mouvement).
La ligne global permet de dire à Python : les variables que j'utilise dans ma fonction nommées a, b et grille sont celles définies en dehors de la fonction. De ce fait, effectue les modifications sur celles-ci directement.
Une autre solution serait de faire :
def mouvement(a, b, grille): # Ton code return (a, b, grille) # a, b et grille sont définis en dehors de ta fonction resultat = mouvement(a, b, grille) a = resultat[0] b = resultat[1] grille = resultat[2] # Le reste de ton code