Stack Overflow en español Asked by Ulises Antonio Chávez on February 17, 2021
Me surgió un problema y por ende una duda acerca del marcador de posición de decimales, ya que al intentar modificar el entero "%.2f"
por "%.(entero)f"
me arrojaba la consola el error ValueError: Format specifier missing precision
Fragmento de mi código:
from random import randint, randrange, choice, uniform
g1,g2,g3=randint(2,3), randrange(2,3), randrange(2,3)
for i in range(3):
x1,y1,z1=('{0:.(g1)f}'.format(x), '{0:.(g2)f}'.format(y), '{0:.(g3)f}'.format(z))
Hay alguna forma de corregir este problema. Agradezco mucho su apoyo.
Puedes usar f-strings, que es lo más versátil y fácil de usar.
Un f-string es una letra "f" seguida de una cadena, como
print(f"El valor es {x}")
Lo especial es que si encierras algo entre corchetes, Python lo interpreta como una expresión, que es evaluada y sustituida dentro de la cadena.
En este ejemplo, si x = 10.12
, entonces
print(f"El valor es {x}") -> El valor es 10.12
Si quieres formatear también la variable, agregas el formato separado por ":", asi:
print(f"El valor es {x:.1f}") -> El valor es 10.1
Ahora, quieres que el número de decimales sea variable, puedes reemplazar el :.1f
por :.{n}f
, quedando así:
valor = 12.3456
for n in range(4):
print(f"{valor:.{n}f}")
produce:
12
12.3
12.35
12.346
Answered by Candid Moe on February 17, 2021
Si lo que quieres es manejar el numero de decimales puedes usar:
round(12.345, n)
Donde n es el numero de decimales que quieras.
Algo así entiendo:
from random import randint, randrange
g1,g2,g3=randint(2,3), randrange(2,3), randrange(2,3)
for i in range(3):
x1,y1,z1 =(round(i, g1), round(i, g2), round(i, g3))
Answered by Mario Monroy on February 17, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP