我正在编写一个执行以下操作的程序:
我写了以下程序
import math
C = 50.0
H = 30.0
Q = []
D = input("Please input the D-Values\n").split(",")
[float(k) for k in D]
#[int(k) for k in D]
print("D = {}".format(D))
for i in D:
j = (math.sqrt((2*C*float(i))/H))
Q.append(j)
print("The answers are")
print(Q)
print(type(Q[0]))
print("Q = {:.2f}".format(Q))
执行此程序时我遇到以下错误
Traceback (most recent call last):
File "/home/abrar/pythonPrograms/Challange6.py", line 24, in <module>
print("Q = {:.2f}".format(Q))
TypeError: non-empty format string passed to object.__format__
我试图搜索此问题的解决方案,但找不到答案。如果不包括{:.2f},即使用{},该程序工作正常。然而,输出看起来非常混乱。
非常感谢任何帮助。
答案 0 :(得分:3)
您正在尝试使用格式字符串list
格式化.2f
- 您想要的是格式化列表中的float
。这是解决这个问题的一种方法:
Q = [1.3, 2.4]
print(', '.join('{:.2f}'.format(f) for f in Q))
# 1.30, 2.40
从python 3.6开始,这也可以写成:
print(', '.join(f'{q:.2f}' for q in Q))
答案 1 :(得分:1)
您正在尝试格式化列表,但您想要的是格式化此列表的元素,因此您需要使用*Q
代替Q
(*
运算符“解压缩”清单)
这是一个解决方案:
fmtL = "Q = " + ', '.join(["{:.2f}"]*len(Q))
print(fmtL.format(*Q))
Q = 1.83, 2.58, 3.16