mon petit cours de python

mon petit cours de python - Python - Programmation

Marsh Posté le 21-12-2002 à 17:01:15    

pourpouvoir avoir ce comportement
 


a=3
 
def foo(arg1):
    arg1=0
 
foo(a)
 
a==0


Message édité par Taz@PPC le 21-12-2002 à 20:26:48

---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 21-12-2002 à 17:01:15   

Reply

Marsh Posté le 21-12-2002 à 17:48:50    

Tout est référence en python.
Simplement les types numériques et string sont invariants.
 
Donc quand tu fais arg1 = 0 dans la fonction foo, l'objet arg1 local à la fonction (initialisé avec la référence passée en argument) référence un nouvel objet numérique nul.
 
Si tu veux modifier a avec une fonction fais:
a = foo()


Message édité par verdoux le 21-12-2002 à 17:52:09
Reply

Marsh Posté le 21-12-2002 à 18:56:10    

chié: c'est un choix, masi ca se défend. autre question: comment faire pour afficher un float avec seulement n decimales par ce que ché moi
 
>>> round(1.23456, 3)
1.2350000000000001
 
ce qui n'est pas tout à fait le résultat escompté


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 21-12-2002 à 20:08:54    

Reply

Marsh Posté le 21-12-2002 à 20:26:24    

et comment faire l'oppération inverse de str?
 
 
genre
 
a=[1, 2, 3]
b=str(a)
 
comment retouver a à partir de b?


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 21-12-2002 à 20:49:08    

Taz@PPC a écrit :

et comment faire l'oppération inverse de str?
 
 
genre
 
a=[1, 2, 3]
b=str(a)
 
comment retouver a à partir de b?


 
c = eval(b)

Reply

Marsh Posté le 21-12-2002 à 20:51:05    

Y a pas de manière générique.
Mais si tu veux sérialiser des données regarde du côté des packages pickle / shelve

Reply

Marsh Posté le 21-12-2002 à 21:08:10    

ca je connais.  :jap:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 19-01-2003 à 01:34:23    

Ha ca fait plaisir une rubrique pour ce language :)
 
bon, dans l'ordre :
 
Taz@PPC> Si tu veut ABSOLUMENT faire ca, tu peut passer par la combine des listes :
 
a=3
 
def foo(arg1):
   arg1[0]=0
 
a=[a]
foo(a)
a=a[0]
 
a==0
 
Mais si c pas indispensable, fait plutot comme te le dis verdoux.
 
ensuite, pour n'avoir que 2 decimales :
print "%.2f" %(round(1.23456, 3))


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 09:23:44    

merci, j'ai pas mal progressé depuis. pour ce problème d'arrondi, il y a aussi le module fpformat, qui fait mieux et lus simplement le boulot
http://www.python.org/doc/current/ [...] ormat.html

Reply

Marsh Posté le 19-01-2003 à 09:23:44   

Reply

Marsh Posté le 19-01-2003 à 14:33:26    

Je ne connaissait pas ce module.  
 
Plus simple, c a toi de voir, moi g l'habitude des % dans les chaines. Par contre mieu bah... je dirai que c'est pareil surtout qu'ils disent : "This module is unneeded: everything here could be done via the % string interpolation operator."


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 14:37:35    

oui, moi aussi j'ai mes habitudes de C, j'aime bien le %, mais en fait j'avais besoin de tronquer mes float pour les stocker en string, et non pour un affichage. dans ce cas la, c'est plus court de passer par fpformat.fix

Reply

Marsh Posté le 19-01-2003 à 14:45:35    

ben pkoi ?
 
au lieu de faire un print rien n'empeche de faire :
ch="%.2f" %54.26877


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 15:02:31    

phod a écrit :

ben pkoi ?
 
au lieu de faire un print rien n'empeche de faire :
ch="%.2f" %54.26877


 
len('ch="%.2f" %54.26877';) == 19
len('ch=fix(54.26877, 2)';) == 19
 
merde  :sweat:  
 
bien que pour etre plsu correct, l'argument de % est un tuple, il faudrait des (), mais je t'en fait grâce...  :D

Reply

Marsh Posté le 19-01-2003 à 15:03:34    

ici les ()  ne sont pas obligatoire...  :D


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 15:04:58    

permet moi de te proposer ceci :  
len("%.2f" %54.26877)==5


Message édité par Phod le 19-01-2003 à 15:05:36

---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 15:07:29    

phod a écrit :

permet moi de te proposer ceci :  
len("%.2f" %54.26877)==5

encore heureux :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed