Python,f字符串格式将浮点值格式化为精确的小数位数

时间:2019-03-04 14:51:05

标签: python string string-formatting f-string

因此,我试图学习Python,并决定尝试在Kattisthis one to be more precise上做一些问题。我设法将一些代码拼凑在一起,以打印出它们提供的正确值。

import functools

for _ in range(int(input())):
  d = list(map(int, input().split()))
  avg = functools.reduce(lambda a, b: a + b, d[1:]) / d[0]
  print(f'{100 * len(list(filter(lambda x: x > avg, d))) / d[0]:.3f}' + '%')

但是,当我提交代码时,它失败了两个测试用例之一,它说得到了错误的答案。我想这可能是由于f字符串格式出现了问题,因为avg似乎获得了正确的值。因此,我希望可能会有更多有才华的人发现我所缺少的错误。

1 个答案:

答案 0 :(得分:0)

这不是f字符串问题。您会误算百分比。不应该包含第一个值。

 print(f'{100 * len(list(filter(lambda x: x > avg, d[1:]))) / d[0]:.3f}' + '%')