Python, imprimer tous les flotteurs à 2 décimales en sortie

J'ai besoin de sortir 4 flotteurs différents à deux décimales.

C'est ce que j'ai:

print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'

Qui est très impur, et qui a l'air mauvais. Y a-t-il un moyen de faire flotter ce%.2f'?

Note: Utilisation De Python 2.6.

50
demandé sur Omar 2010-01-16 01:15:31

6 réponses

Eh Bien, je voudrais au moins le nettoyer comme suit:

print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4)
66
répondu Frank Krueger 2010-01-15 22:18:30

Si vous voulez simplement convertir les valeurs en jolies chaînes, procédez comme suit:

twodecimals = ["%.2f" % v for v in vars]

Alternativement, vous pouvez également imprimer les unités comme vous l'avez dans votre question:

vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated

print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'

La deuxième façon vous permet de changer facilement le délimiteur (tabulation, espaces, sauts de ligne, etc.) pour répondre facilement à vos besoins; le délimiteur pourrait également être un argument de fonction au lieu d'être codé en dur.

Edit: Pour utiliser votre "nom = valeur" syntaxe simplement changer l'élément-sage fonctionnement dans la liste compréhension:

print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'
22
répondu awesomo 2010-01-16 04:41:48

Formater La Syntaxe De Chaîne.

Https://docs.python.org/3/library/string.html#formatstrings

from math import pi
var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4
'{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4)

La sortie serait:

'3.14, kg=6.28, lb=9.42, gal=12.57'
14
répondu Chikipowpow 2016-03-24 15:41:57

Si vous cherchez la lisibilité, je crois que c'est ce code:

print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
    'kg': var1,
    'lb': var2,
    'gal': var3,
    'l': var4,
}
6
répondu Cacilhas 2010-01-16 02:10:54

Je viens de découvrir la fonction ronde-c'est en python 2.7, pas sûr de 2.6. Il prend un float et le nombre de dps comme arguments, donc round (22.55555, 2) donne le résultat 22.56.

5
répondu Rioka 2012-06-14 18:31:54

Pas directement dans la façon dont vous voulez écrire, non. L'un des principes de Python est "Explicite est mieux que implicites" (voir import this). Cela signifie qu'il est préférable de décrire ce que vous voulez plutôt que d'avoir le format de sortie dépend d'un paramètre de formatage global ou quelque chose. Vous pouvez bien sûr formater votre code différemment pour le rendre plus agréable:

print         '%.2f' % var1, \
      'kg =' ,'%.2f' % var2, \
      'lb =' ,'%.2f' % var3, \
      'gal =','%.2f' % var4, \
      'l'
1
répondu Greg Hewgill 2010-01-15 22:20:59