Я пытаюсь написать функцию в SageMath, которая печатает все номера такси (числа, которые равны сумме нескольких наборов из двух значений, кубированных и затем добавленных вместе), меньше или равно определенному значению (в моем коде я ссылаюсь на этот номер как переменная t).SageMath Как исправить список для номеров такси, которые должны быть правильно сгенерированы?
Я не могу понять, как внести соответствующие изменения для списков (которые я изначально написал в Python 2.7) для запуска в SageMath. В результате я получаю сообщение об ошибке:
Traceback (most recent call last): for i in range(1,len(sums)-1):
File "", line 1, in <module>
File "/private/var/folders/96/g5hyl4ps29dglpy8fnwww6x80000gn/T/tmpWiTKG1/___code___.py", line 16, in <module>
exec compile(u'Ramanujan(_sage_const_10000)
File "", line 1, in <module>
File "/private/var/folders/96/g5hyl4ps29dglpy8fnwww6x80000gn/T/tmpWiTKG1/___code___.py", line 7, in Ramanujan
crev[x3] = x + _sage_const_1 ;
IndexError: list assignment index out of range
Код:
def Ramanujan(t):
cubes = [x**3 for x in range(1,t/10)];
crev = [] # Calculating Cube Roots;
for x,x3 in enumerate(cubes):
crev[x3] = x + 1;
sums = sorted(x + y for x in cubes for y in cubes if y < x) # Organizing Data
for i in range(1,len(sums)-1):
if sums[i-1] != sums[i] and sums[i] == sums[i+1]: # Finding solutions
if sums[i]<=t: # Limiting how many solutions printed.
print "%10d"%(sums[i]) # Printing desired outputs
else:
break # Ending the function.
Ramanujan(10000)
(Ramanujan (10000) должен вызвать функцию для печати 2 значения меньше, чем 10000)
мне нужно сделать объявлять переменные в моей функции как переменные объекты? Не нужно ли создавать пустой список crev перед его заполнением? Это просто проблема с тем, как я пытаюсь использовать списки?