Python, f-string форматирование значения с плавающей точкой в ​​точное количество десятичных дробей - PullRequest
0 голосов
/ 04 марта 2019

Итак, я пытаюсь выучить Python и решил попробовать и решить некоторые проблемы на Kattis , , а точнее .Мне удалось собрать воедино некоторый код, который выводит правильное значение в том случае, если они предоставляют.

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 голосов
/ 04 марта 2019

Это не строковая проблема.Вы неправильно рассчитали процент.Первое значение не должно быть включено.

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