Код не выполняется в тестовом случае. (InterQuartile Range) - PullRequest
0 голосов
/ 24 апреля 2020

Это вызов из 10-дневной статистики по Hackerrank. (https://www.hackerrank.com/challenges/s10-interquartile-range/problem?h_r=next-challenge&h_v=zen)

Задача: Задача Межквартильный диапазон массива - это разница между его первым (Q1) и третий (Q3) квартиль (то есть Q3 - Q1).

Учитывая массив X из n целых чисел и массив F, представляющий соответствующие частоты элементов X, построить набор данных S, где каждый xi происходит на частоте fi. Затем вычислите и распечатайте межквартильный диапазон S, округленный до 1 десятичного знака (т. Е. В формате 12,3).

Ниже приведен мой код.

n = int(input())
x = list(map(int, input().split()))

f = list(map(int, input().split()))

s = []

for i in range(len(x)):
    j = f[i]
    for k in range(j):
        s.append(x[i])
n = len(s)

s.sort()
if n%2 == 0:
    Q21 = s[n//2]
    Q22 = s[n//2 - 1]
    Q2 = (Q21 + Q22) / 2
else:
    Q2 = s[n//2]

LH = s[:n//2]
if n%2==0:
    UH = s[n//2:]
else:
    UH = s[n//2+1:]

Q1_len = len(LH)
Q3_len = len(UH)
if Q1_len%2 == 0:
    Q11 = LH[Q1_len//2]
    Q12 = LH[Q1_len//2 - 1]
    Q1 = (Q11 + Q12) / 2
else:
    Q1 = LH[Q1_len//2]

if Q3_len%2 == 0:
    Q31 = UH[Q3_len//2]
    Q32 = UH[Q3_len//2 - 1]
    Q3 = (Q31 + Q32) / 2
else:
    Q3 = UH[Q3_len//2]

print(round(Q3 - Q1,1))
# print(int(Q2))
# print(int(Q3))

Вот пример теста: ввод std.

5

10 40 30 50 20

1 2 3 4 5

Ожидаемый вывод:

30.0

Вывод моего кода:

30.0 # I get this output on my code editor but not on Hackerrank

Может ли кто-нибудь помочь мне в этом, где я ошибаюсь?

Я получаю вывод, что ожидается, но он показывает, как не удалось.

1 Ответ

0 голосов
/ 24 апреля 2020
print(float(Q3 - Q1))

В основном это ответ.

...