需要帮助来了解格式“ .2f”命令以及为什么它在我的代码中不起作用

时间:2019-09-30 16:38:53

标签: python python-3.x

我正在练习格式语句,但是我不太了解它是如何工作的。我专门尝试使用“ .2f”命令来理解format命令,这是我当前拥有的代码,第二行在返回之前运行并返回错误:

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.")

我正在尝试编写一个脚本,该脚本显示以下示例运行的输出:

//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

4 个答案:

答案 0 :(得分:2)

.2f应该在format方法之外。 例如,尝试print("{:.2f}".format(12.345678))

答案 1 :(得分:2)

TL; DR

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

打破现状:

将数字转换为带浮点表示形式(.2部分)的小数点后两位(f部分)格式的字符串。

format(salesAmount, '.2f')

现在您有了一个字符串,可以通过打印将其连接起来,也可以通过+或其他任何方式连接到先前的代码。

'The sales amount is $' + the_formatted_number

答案 2 :(得分:1)

format是一个内置函数,带有两个参数:valueformat_spec

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

会给您一个错误,因为它期望数字或数字的字符串表示形式为value才能应用您提供的格式。您会得到一个错误:

  

ValueError:类型为'str'的对象的未知格式代码'f'

format(salesAmount, '.2f')

这将正常工作。

注意:如果您使用的是Python 3.6+,则还可以使用f字符串:

f"{12.345678:.2f}"

答案 3 :(得分:1)

语法是

format(value, format_spec)

使用.2f格式时,该值应为float,而不是字符串,因此您需要将输入转换为floatinput()返回一个字符串,不需要在结果上使用str()。而且在格式化之前无法将$连接到值,您需要将其连接到结果。

您在totalSales调用中还使用了不存在的变量print(),它应该是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.")

也就是说,如今format()函数的这种用法并不常见。使用f字符串或str.format()更加容易,它可以让您将格式规范嵌入到带有纯文本的字符串中,并将多个值格式化在一起,例如

print("The sales amount is ${.2f}".format(salesAmount))