2013-07-25 9 views
0

Im новый для python, и хотя этот следующий вопрос кажется легким, я не могу понять, что это правильно. После того, как я поместил свой ввод для n в код и не могу придумать способ получить формулу, которая работает.Python ... отображение положительных четных чисел до ...

Это вопрос: Запишите программу, которая запрашивает у пользователя положительный четный целочисленный вход n, а выходы суммы 2 + 4 + 6 + 8 + ... + n, сумма всех положительных даже целые числа до n.

благодарит за любую помощь !!!

+3

Опубликуйте свой текущий код. – Blender

ответ

3

Два совета, так как это задание, и вы не разместили ни одного кода.

  1. Функция range может производить список, который вы хотите. Он принимает 3 параметра, начало списка, остановку (которая не входит в список) и шаг. Поскольку вы считаете каждый другой номер, ваш шаг равен 2.

  2. Функция sum будет полезна.

3

Видимо результат вы ищете в два раза сумма чисел в [1, n/2], который вычисляет (n/2)*(n/2 + 1)/2. Формула, которую вы ищете, равна (n/2)*(n/2 + 1).

+0

Который может быть записан как 'n * (n + 2)/4' –

1

Предположим, n=8. range дает вам список номеров, которые вы хотите добавить

>>> range(2, n+1,2) 
[2, 4, 6, 8] 

и sum дает вам возможность добавить до записи в списке

>>> sum(range(2, n+1, 2)) 
20 

Можно вычислить сумму без добавления всех отдельные числа, используя эту формулу

>>> n*(n+2)/4 
20 

Но вы, вероятно, должны показать, как вывести формулу, если вы собираетесь использовать этот ответ.

Вот набросок при п = 12, A представляет 10 и 12 представляет C

22CCCCCCCCCCCC 
4444AAAAAAAAAA 
66666688888888 

Глядя на верхней строке, мы видим, что этот прямоугольник (n+2) в ширину. И после небольшой мысли вы увидите, что высота n/4. Сумма, тогда является просто произведением этих двух членов.

Аналогичный аргумент может работать, когда n не divisable на 4.

1

Простейшим, но даст неправильный ответ для нечетных или отрицательных чисел:

n=int(raw_input('Enter a positive even integer:')) 
print n*(n+2)/4 

Придает правильный ответ для нечетных и отрицательных чисел:

n=int(raw_input('Enter a positive even integer:')) >>1<<1 
print n*(n+2)/4 if n>0 else 0 

или

n=int(raw_input('Enter a positive even integer:')) 
print sum(range(2, n+1, 2)) 
+0

Я использую 3.3, который только вводится вместо raw_input, однако я, кажется, получаю недопустимые синтаксические сообщения? – user2616576

Смежные вопросы