Résolue

Réduire le nombre de décimale affiché

# Fonctions natives

il n'est pas possible de réduire le nombre de chiffre affiché avec .zfill() quand on utilise .uniform ?

Salut Mathieu, as-tu un bout de code à montrer ? Tu peux utiliser la fonction round() pour arrondir un nombre.

ah d'accord, je vois

j'avais fait ça :

r = random.uniform(0, 20)
r= str(r).zfill(4)
print(r)

Mais ça n'affichait ni erreur ni modification dans le résultat.

merci

hum ça ne fonctionne toujours pas, ma syntaxe est surement pas bonne...

Salut Mathieu.


Et si tu utilises round() comme cela:

r = random.uniform(0, 20)

# conversion en string pour pouvoir utiliser zfill
resultat = str(round(r, 5)).zfill(4)

# à noter que la variable résultat est maintenant de type str
print(resultat)


Ca me semble pas super propre comme solution. J'ai testé et ça fonctionne de mon côté, mais tu auras sûrement qqn qui pourra te proposer une solution plus "propre".


Thibault houdon

Mentor

Je confirme que la façon de limiter le nombre de décimales est bien d'utiliser la fonction round :

>>> round(1.23456, 3)

1.235


zfill permet de rajouter des 0 au début d'une chaîne de caractères. Ça peut être n'importe quelle chaîne de caractères, pas obligatoirement des chiffres d'ailleurs :

>>> "ab".zfill(4)
'00ab'
>>> "ab".zfill(8)
'000000ab'
>>> "10".zfill(8)
'00000010'

merci, j'étais un peu confus sur l'utilisation de .zfill mais ca va maintenant, j'ai compris

J'ai failli me faire avoir avec la méthode "zfill()".

Rempli la chaîne spécifiée avec des 0 (de la longueur indiquée en argument) → moi je pensais avoir autant de zéro indiqué par le nombre mis en argument. Cependant c'est toute la chaîne qui doit être égale à la longueur spécifiée en argument.


La méthode zfill() en Python est utilisée pour remplir un chaîne de caractères avec des zéros à gauche jusqu'à ce qu'elle atteigne une longueur spécifiée. Cela peut être utile pour aligner les nombres lors de l'affichage ou pour s'assurer que tous les nombres ont la même longueur lors de la manipulation de données numériques.


num = "74"
print(num.zfill(5)) 
"00074"

ici, on ajoute 3 zéros à gauche de la chaîne "74" pour atteindre une longueur de 5.


"dksl".zfill(6)
'00dksl'

ici, on ajoute 2 zéros à gauche de la chaîne "dksl" pour atteindre une longueur de 6.



Ici j'utilise les méthode random & round & zfill ensemble et voilà ce que ça donne. Je sais pas si c'est du code propre ?

Hello,


oui c'est propre !


En bonus si tu veux un format particulier par exemple en puissance de 10 tu peux utiliser le .ne avec n le nombre de chiffre après la virgule et e pour "exposant"


In [16]: r = random.uniform(0, 1e9)

In [17]: f"{r:.2e}"
Out[17]: '3.76e+08'

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.