exploiter la valeur retournée d'une fonction comme une variable
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

exploiter la valeur retournée d'une fonction comme une variable



  1. #1
    daniye

    exploiter la valeur retournée d'une fonction comme une variable


    ------

    Bonjour,
    J'aimerai savoir comment je peux recuperer la valeur retournée d'une fonction, la stocker dans une variable afin de l'exploiter.
    Voici le code de la fonction et je veux recuperer Cn et Cs pour un calcul
    Pouvez vous me depanner svp?

    Code:
    Matrix = [[0 for x in xrange(10)] for x in xrange(10)]
    x=4 #Coordonnee en x egal ind_ic
    y=4 #Coordonnee en y egal a p et ind_jc 
    r=2 #rayon de couverture
    SN=0 #Difference entre Nord et Sud
    
    def maj():
    	Matrix[4][2]=1 #West"
    	Matrix[4][4]=5 #Centre de matrice noeud"
    	Matrix[4][6]=3 #East"
    	Matrix[2][4]=2 #"Nord
    	Matrix[6][4]=4 #"South
    
    def show():
    	for line in Matrix:
    		print line
    	return line
    
    def nord():
    	global x
    	global y
    	global r
    	Cn=0
    	i=0
    	i=y-r
    	for somme in range(len(Matrix)):
    		if i <= (y+r):
    			Cn+=Matrix[2][i]
    			i+=1
    	return Cn
    
    def south():
    	global x
    	global y
    	global r
    	Cs=0
    	i=0
    	i=y-r
    	for somme in range(len(Matrix)):
    		if i <= (y+r):
    			Cs+=Matrix[6][i]
    			i+=1
    	return Cs
    
    maj()
    show()
    nord()
    south()
    SN=(int(Cn)-int(Cs))**2
    Comment faire svp
    Merci,

    -----

  2. #2
    Jack
    Modérateur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Je ne comprends pas trop où est le problème. Affecter le résultat de la fonction à une variable ne te convient-il pas?
    Du style:
    var1 = nord()
    var2 = south()

  3. #3
    daniye

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Merci, je l'avais essayer mais ce ne renvoyai rien , j'avais dû me tromper quelque part.

    Autre question, j'aimerai que ces fonctions fonctionnent aussi dans le cas ou je deplace la valeur contenu aux coordonnées (x,y) de la matrice, le centre du noeud. Comment puis je faire?

  4. #4
    Jack
    Modérateur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Citation Envoyé par daniye Voir le message
    Autre question, j'aimerai que ces fonctions fonctionnent aussi dans le cas ou je deplace la valeur contenu aux coordonnées (x,y) de la matrice, le centre du noeud. Comment puis je faire?
    C'est du langage codé? Ca mérite un peu plus d'explications, voire un exemple, parce que je n'y comprends pas grand chose.

  5. A voir en vidéo sur Futura
  6. #5
    Arzhur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Bonjour,


    De loin ça ressemble à du Python.

    Est-ce que tu peux nous dire s'il y a des messages d'erreurs et ce qui "ne marche pas" (enfin ce à quoi tu t'attendais).

  7. #6
    Jack
    Modérateur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    A mon avis, il n'y a aucun message d'erreur. J'ai l'impression que daniye veut juste ajouter des fonctionnalités, mais c'est tellement mal exprimé ...

  8. #7
    Arzhur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Je sais pas trop, parce que quand je lis ça :

    Code:
    maj()
    show()
    nord()
    south()
    SN=(int(Cn)-int(Cs))**2
    avec Cn et Cs déclarées uniquement dans les corps de fonction...il me semble que python (si c'est du python) râle quand même (à vérifier).

  9. #8
    Jack
    Modérateur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    en effet.

    Attendons la suite.

  10. #9
    daniye

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Oui c'est python, Jack a semblé comprendre en effet.
    Desolé si je me suis mal exprimé, ce n'est toujours pas facile d'exprimer ce qu'on veut faire quand on reflechi.

    en fait mon objectif est de me deplacer dans une matrice, tout en calculant avant tout les valeurs qui me permettrot d'orienter mon deplacement.
    Voici deux scripts : Dans l'un vous verez le deplacement auquel je fais allusion, dans l'autre vous verez le choix de la direction.

    Vous remarquerez que ces fonctions ne sont valables que pour la 1ere postion de mon noeud.
    Dernière modification par daniye ; 06/08/2014 à 16h09.

  11. #10
    daniye

    Re : exploiter la valeur retournée d'une fonction comme une variable

    J'ai envoyé les scripts par jointure mais je les retrouve pas dans le forum, alors je fais un copier / coller des codes.
    Ils ne sont pas beau à voir mais, je suis debutant et je ne maitrise pas encore la POO

    Deplacement de la matrice:
    a la fin de l'execution j'ai une erreur out of range
    Code:
    #! /usr/bin/env python
    
    import os
    
    Matrix = [[0 for x in xrange(10)] for x in xrange(10)]
    
    ind_ic=4
    ind_id=4
    ind_ig=4
    ind_ih=2
    ind_ib=6
    ind_jc=p=4
    ind_jd=d=6
    ind_jg=g=2
    ind_jh=h=4
    ind_jb=b=4
    i=0
    r=2
    
    def maj():
    	Matrix[4][2]=1 #Bordure ouest
    	Matrix[4][4]=5 #Centre du noeud
    	Matrix[4][6]=4 #Bordure sud
    	Matrix[2][4]=2 #Bordure nord
    	Matrix[6][4]=3 #Bordure est
    
    def show():
    	for line in Matrix:
    		print line
    	return line
    
    show()
    maj()
    
    #Deplacement du noeud
    for i in range ((i-r), (i+r)):
    	ind_jc=p
    	ind_jd=d
    	ind_jg=g
    	ind_jh=p
    	ind_jb=p
    	for j in range(len(Matrix)-1):
    		i=0
    		"On incremente la position"
    		ind_jd+=1
    		ind_jc+=1
    		ind_jg+=1
    
    		ind_jb+=1
    		ind_jh+=1
    
    		"On change la place de la valeur"
    		Matrix[ind_ih][(ind_jh)]=Matrix[ind_ih][(ind_jh)-1]
    		Matrix[ind_id][(ind_jd)]=Matrix[ind_id][(ind_jd)-1]
    		Matrix[ind_ic][(ind_jc)]=Matrix[ind_ic][(ind_jc)-1]
    		Matrix[ind_ig][(ind_jg)]=Matrix[ind_ig][(ind_jg)-1]
    		Matrix[ind_ib][(ind_jb)]=Matrix[ind_ib][(ind_jb)-1]
    		Matrix[ind_ih][(ind_jh)-1]=0
    		Matrix[ind_id][(ind_jd)-1]=0
    		Matrix[ind_ic][(ind_jc)-1]=0
    		Matrix[ind_ig][(ind_jg)-1]=0
    		Matrix[ind_ib][(ind_jb)-1]=0
    		print "*******************************"	
    		os.system("clear")	
    		show()	
    		print "*******************************"
    	p=ind_jc
    	d=ind_jd
    	g=ind_jg
    pour observer le choix du deplacement:
    Code:
    #! /usr/bin/env python
    #***********************************************
    #                    Variables 
    
    x=4 #Coordonnee en x egal ind_ic
    y=4 #Coordonnee en y egal a p et ind_jc 
    r=2 #rayon de couverture
    SN=0 #Difference entre Nord et Sud
    EW=0 #Difference entre Est et Ouest
    NESW=0
    NWSE=0
    DIR=0
    Cn=0
    Cs=0
    Ce=0
    Cw=0
    Cne=0
    Cnw=0
    Cse=0
    Csw=0
    #***********************************************
    Matrix = [[0 for x in xrange(10)] for x in xrange(10)]
    def maj():
    	Matrix[4][2]=1 #West"
    	Matrix[4][4]=5 #Centre de matrice noeud"
    	Matrix[4][6]=3 #East"
    	Matrix[2][4]=2 #"Nord
    	Matrix[6][4]=4 #"South
    
    def show():
    	for line in Matrix:
    		print line
    	return line
    
    show()
    maj()
    print "*****************"
    show()
    """
    Regroupement des differentes fonctions pour le calcul
    des densite de prediction de mouvement "C"
    """
    #Fonction Ouest, a partir du haut (y+r)en fonction de j
    
    def west():
    	global x
    	global y
    	global r
    	Cw=0
    	i=0
    	i=x-r
    	for somme in range(len(Matrix)):
    		if i <= (x+r):
    			Cw+=Matrix[i][0]
    			i+=1
    	return Cw
    
    #Fonction Sud a partir du bas (y - r) en fonction de j 
    """
    def east():
    	global x
    	global y
    	global r
    	Ce=0
    	j=0
    	j=x-r
    	for somme in range(len(Matrix)):
    		if j <= (x+r):
    			Ce+=Matrix[j][6]
    			j+=1
    	return Ce
    """
    #Fonction Est, a partir de la droite  (x + r) en fonction de i
    def south():
    	global x
    	global y
    	global r
    	Cs=0
    	i=0
    	i=y-r
    	for somme in range(len(Matrix)):
    		if i <= (y+r):
    			Cs+=Matrix[6][i]
    			i+=1
    	return Cs
    
    
    #Fonction west, a partir de la gauche (x + r) en fonction de i
    def nord():
    	global x
    	global y
    	global r
    	Cn=0
    	i=0
    	i=y-r
    	for somme in range(len(Matrix)):
    		if i <= (y+r):
    			Cn+=Matrix[2][i]
    			i+=1
    	return Cn
    
    #**********************************************************
    #            Calcul de densite de couverture "C"
    #
    Cn=nord() #renvoi Cn
    Cs=south() #renvoi Cs
    #Ce=east() #renvoi Ce
    #Cw=west() #renvoi Cw
    
    #**********************************************************
    #             Choix de direction a prendre
    #
    #**** Prevision de choix aleatoire en cas de valeur egale
    
    SN=(int(Cn)-int(Cs))**2
    EW=(int(Cw)-int(Ce))**2
    NESW=(int(Csw)-int(Cne))**2
    NWSE=(int(Cse)-int(Cnw))**2
    DIR=max(SN,EW,NESW,NWSE) 
    
    #**********************************************************
    #           Execution du mouvement
    
    if (DIR==SN):
    	if (Cn >= Cs):
                    print "Cn :",Cn
                    print "Cs :",Cs
    		print "Noeud bouger vers le sud"
    	else:
                    print "Cn :",Cn
                    print "Cs :",Cs
    		print "Noeud bouger vers le nord"
    elif (DIR==EW):
    	if (Cw >= Ce):
    		print "Noeud bouger vers l'Est"
    	else:
    		print "Noeud bouger vers l'Ouest"
    elif (DIR==NESW):
    	if (Csw >= Cne):
    		print "Noeud bouger vers le Nord_Est"
    	else:
    		print "Noeud bouger vers le Nord_Ouest"
    elif (DIR==NWSE):
    	if (Cnw >= Cse):
    		print "Noeud bouger vers le Sud_Est"
    	else:
    		print "Noeud bouger vers le Sud_Ouest"
    #*************************************************
    #                  Test                          *
    
    print "Voici la matrice "
    show()
    print "Cn:", Cn

  12. #11
    daniye

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Citation Envoyé par Arzhur Voir le message
    Je sais pas trop, parce que quand je lis ça :

    Code:
    maj()
    show()
    nord()
    south()
    SN=(int(Cn)-int(Cs))**2
    avec Cn et Cs déclarées uniquement dans les corps de fonction...il me semble que python (si c'est du python) râle quand même (à vérifier).
    En effet ça râle et je cherchais un moyen de les recuperer sans que ca ne rale. je ne savais pas que je pouvais le faire en ecrivant
    Code:
    Cn=nord()
    Cs=south()

    Citation Envoyé par Jack Voir le message
    C'est du langage codé? Ca mérite un peu plus d'explications, voire un exemple, parce que je n'y comprends pas grand chose.
    je vais essayer d'appreter un exemple

  13. #12
    Jack
    Modérateur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Citation Envoyé par daniye Voir le message
    En effet ça râle et je cherchais un moyen de les recuperer sans que ca ne rale. je ne savais pas que je pouvais le faire en ecrivant
    Code:
    Cn=nord()
    Cs=south()
    J'en conclus que te n'as pas bien compris ce qu'est une variable, ni les règles de portée des variables. Peut-être devrais-tu te renseigner davantage sur celles-ci avant de t'aventurer plus avant.

  14. #13
    Arzhur

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Deplacement de la matrice:
    a la fin de l'execution j'ai une erreur out of range
    Oui vu la tête de la boucle ça m'étonne pas ....fais attention à tes index.

  15. #14
    daniye

    Re : exploiter la valeur retournée d'une fonction comme une variable

    Merci pour vos conseils, il me fallait bien relire ce qui est dit sur la portée des variables.
    Ca va mieux

Discussions similaires

  1. Exploiter un tableau ( fonction exponentielle)
    Par invitec1f5507d dans le forum Mathématiques du collège et du lycée
    Réponses: 16
    Dernier message: 15/12/2012, 17h13
  2. Exploiter une variable signée en php
    Par mayonaise dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 05/11/2011, 10h36
  3. comment déterminer une densité d'une variable qui est en fonction d'une autre variable
    Par invite1e252b6d dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 11/09/2010, 20h30
  4. omment déterminer une densité d'une variable qui est en fonction d'une autre variable
    Par invite1e252b6d dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 11/09/2010, 13h41
  5. comment déterminer une densité d'une variable qui est en fonction d'une autre variable
    Par invite1e252b6d dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 04/09/2010, 20h40