mon petit cours de python - Python - Programmation
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()
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é
Marsh Posté le 21-12-2002 à 20:08:54
Va lire ça :
http://wikipython.tuxfamily.org/cg [...] culerJuste
Marsh Posté le 21-12-2002 à 20:49:08
Taz@PPC a écrit : et comment faire l'oppération inverse de str? |
c = eval(b)
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
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))
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
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."
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
Marsh Posté le 19-01-2003 à 15:02:31
phod a écrit : ben pkoi ? |
len('ch="%.2f" %54.26877' == 19
len('ch=fix(54.26877, 2)' == 19
merde
bien que pour etre plsu correct, l'argument de % est un tuple, il faudrait des (), mais je t'en fait grâce...
Marsh Posté le 19-01-2003 à 15:07:29
Reply
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++]