gpt4 book ai didi

python - 在 Python3 中打印格式化的浮点列表

转载 作者:行者123 更新时间:2023-11-28 21:37:27 25 4
gpt4 key购买 nike

我正在编写一个执行以下操作的程序:

  • 采用以逗号分隔的多个输入(浮点数)
  • 对列表的所有元素执行计算
  • 输出一个列表(带两位小数的浮点数)

  • 我编写了以下程序
    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},即使用 {},程序运行良好。但是,输出看起来非常困惑。

    任何帮助都受到高度赞赏。

    最佳答案

    您正在尝试格式化 list格式字符串 .2f - 你想要的是格式化 float s 在您的列表中。这是解决此问题的一种方法:

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

    或者,您可以创建自己的接受格式字符串的类:
    class FloatList(list):

    def __init__(self, *args):
    super().__init__(args)

    def __format__(self, format_spec):
    return f'[{", ".join(f"{i:{format_spec}}" for i in self)}]'


    fl = FloatList(0.1, 0.33, 0.632)
    print(f"{fl:.2f}") # [0.10, 0.33, 0.63]

    关于python - 在 Python3 中打印格式化的浮点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462531/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com