Estoy practicando mis declaraciones de formato, pero no entiendo cómo funciona. Estoy tratando específicamente de entender el comando de formato usando el comando ".2f", este es el código que tengo actualmente, la segunda línea se ejecuta antes de que regrese y aparece un error:

salesTax = 0.08

salesAmount = str(input('Enter the sales amount: '))

print ('The sales amount is', format('$'+salesAmount, 
'.2f'))

print ('The sales tax is', format("$"+'.2f'))

print('The total sale is', format("$"+totalSales*salesTax, 
'.2f'))

input("\nRun complete. Press the Enter key to exit.")

Estoy tratando de hacer un script que muestre el resultado de la siguiente ejecución de muestra:

//Sample run:
Enter the sales amount: 1234
The sales amount is $ 1,234.00
The sales tax is $ 98.72
The total sale is $ 1,332.72
Run complete. Press the Enter key to exit
1
Leo V. 30 sep. 2019 a las 19:38

4 respuestas

La mejor respuesta

TL; DR

print('The sales amount is $', format(salesAmount, '.2f'))

Desglosándolo:

Convierta el número a cadena formateada como 2 lugares decimales (porción .2) con representación de coma flotante (porción f).

format(salesAmount, '.2f')

Ahora que tiene una cadena, la une con pase para imprimir o puede unirse al código anterior con + o lo que sea.

'The sales amount is $' + the_formatted_number
2
JBernardo 30 sep. 2019 a las 16:43

La sintaxis es

format(value, format_spec)

Cuando utiliza un formato .2f, el valor debe ser float, no una cadena, por lo que debe convertir la entrada a float (input() devuelve una cadena, hay no es necesario usar str() en el resultado. Y no puede concatenar $ al valor antes de formatearlo, debe concatenar eso al resultado.

También usó una variable inexistente totalSales en sus llamadas print(), debería ser salesAmount.

salesTax = 0.08
salesAmount = float(input('Enter the sales amount: '))
print ('The sales amount is', '$' + format(salesAmount, '.2f'))
print ('The sales tax is', '$' + format(salesTax*salesAmount, '.2f'))
print('The total sale is', '$' + format(salesAmount + salesAmount*salesTax, '.2f'))
input("\nRun complete. Press the Enter key to exit.")

Dicho esto, este uso de la función format() no es común en estos días. Es más fácil usar una cadena f o str.format(), que le permite incrustar la especificación de formato en una cadena con el texto plano y formatear múltiples valores juntos, p.

print("The sales amount is ${.2f}".format(salesAmount))
1
Barmar 30 sep. 2019 a las 16:59

format es una función integrada que requiere dos argumentos: value y format_spec.

format('$' + salesAmount, '.2f')

Le dará un error porque espera un número o una representación de cadena de un número como value para aplicar el formato que ha proporcionado. Recibirá un error:

ValueError: código de formato desconocido 'f' para el objeto de tipo 'str'

format(salesAmount, '.2f')

Esto funcionará correctamente.

Nota: si está utilizando Python 3.6+, también puede usar una cadena f:

f"{12.345678:.2f}"
1
lmiguelvargasf 30 sep. 2019 a las 16:54

.2f debe estar fuera del método de formato. por ejemplo, intente print("{:.2f}".format(12.345678))

2
David Kong 30 sep. 2019 a las 16:43
58171983