Вычисление среднего в взаимозаменяемом диапазоне? - PullRequest
0 голосов
/ 29 октября 2009

Я знаю, что это из-за n, но предполагается, что n - любая переменная, и оставлено как n, вот что у меня есть:

def average(n):
    if n >= 0:
        avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
    print avg

как мне это исправить?

Ответы [ 3 ]

2 голосов
/ 29 октября 2009

Сумма x от 1 до n равна просто (n + 1) * (n / 2). Количество суммируемых элементов составляет n. Сделайте небольшое упрощение, и ваша новая функция

def average(n):
    return (n + 1) / 2.0

Вам придется изменить это, если вы на самом деле хотите, чтобы поведение Python ограничивало верхнюю границу для range () (т. Е., Если Average (10) возвращает среднее из суммы значений 1 - 9 вместо 1 - 10). ).

1 голос
/ 29 октября 2009

Я могу ошибаться, но диапазон (1: int (n)) не выглядит синтаксически правильным, а круглые скобки не совпадают. Вы можете рассчитать среднее число в диапазоне от 0 до n. В этом случае я бы заменил ваш код следующим образом:

def average(n):
if n >= 0:
    avg = sum((range(int(n))))/float(n)
print avg
0 голосов
/ 29 октября 2009

Если ваш диапазон всегда 1: n, почему бы вам просто не использовать это:

avg = sum((range(1:int(n)))/float(n))

А может я не понимаю вашего вопроса ...

...