2016-06-30 3 views
-1

Вопрос, который я пытаюсь решить здесь: https://projecteuler.net/problem=6Проект Эйлера # 6 Python

Я попытался это, но все, что было напечатано было два нуля:

sumsquare = 0 
ssum = 0 
def sumsquaredif(n): 
    for i in range(1, n+1): 
     num = i ** 2 
     num += sumsquare 
     i += ssum 
    squaresum = ssum**2 
    print (squaresum) 
    print (sumsquare) 
    return 
sumsquaredif(10) 

И тогда, конечно, я бы необходимо добавить код для вычитания sumsquare из squaresum и распечатать его. Но этот предварительный код не работает. Я был бы очень признателен, если бы кто-то мог помочь. Я все еще новичок. Спасибо!

+0

Почему у вас есть строка 'я + = ssum'? –

+1

вы присваиваете 'ssum = 0' и никогда не изменяете это или ничего не добавляете к нему. –

ответ

2

Ваши += присвоения - это неправильный путь! num += sumsquare добавляет сумму к текущему номеру, а не наоборот, и аналогично для ssum. Кроме того, переменные суммы должны быть объявлены внутри функции.

def sumsquaredif(n): 
    sumsquare = 0 # inside function 
    ssum = 0  # inside function 
    for i in range(1, n+1): 
     num = i ** 2 
     sumsquare += num # inversed 
     ssum += i   # inversed 
    squaresum = ssum**2 

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

sumsquare = sum(n for n in range(1, n+1))**2 
squaresum = sum(n**2 for n in range(1, n+1))