Python, сгенерировать простых близнецов

Я попытался написать программу на Python для создания простых близнецов в Sage.

Однако я не могу заставить его работать.

Код: http://pastebin.com/PRnvJsf3

Sage дает мне следующее сообщение об ошибке:

Traceback (most recent call last):    y = 1
  File "", line 1, in <module>

  File "/private/var/folders/6-/6-7wRVdAEhuqw8H28uS60U+++TI/-Tmp-/tmp8b0dCT/___code___.py", line 19
    while s1[y] < s1[len(s1)]
                            ^
SyntaxError: invalid syntax

Спасибо, я поставил недостающие двоеточия.

Теперь я получаю

Traceback (последний последний вызов): y = 1 File "", строка 1, in

Файл "/private/var/folders/6-/6-7wRVdAEhuqw8H28uS60U+++TI/-Tmp-/tmpEIEhQs/code.py", строка 19, если (s1 [k] + s1[y]) == ((s1[k] + (s1[k] + _sage_const_2 )): ^ SyntaxError: недопустимый синтаксис

Спасибо, я также вставил недостающие скобки

теперь я получаю

Traceback (последний последний вызов): y = 1 File "", строка 1, in

Файл "/private/var/folders/6-/6-7wRVdAEhuqw8H28uS60U+++TI/-Tmp-/tmp9RE23a/code.py", строка 18, в то время как s1[y] ‹ s1[len(s1)]: IndexError: индекс списка вне допустимого диапазона

Хм, полагаю, я не могу использовать здесь len(s1).

Большое спасибо, теперь работает

в то время как s1[y] ‹ s1[len(s1) - 1]:

Однако,

s2 = s2 + s1[k] не является допустимым кодом.

получаю следующую ошибку

Traceback (последний последний вызов): y = 1 File "", строка 1, in

Файл "/private/var/folders/6-/6-7wRVdAEhuqw8H28uS60U+++TI/-Tmp-/tmp3tx5on/code.py", строка 20, в s2 = s2 + s1[k] Файл "element.pyx", строка 1525, в sage.structure.element.RingElement.добавить (sage/structure/element.c:13476) Файл "coerce.pyx ", строка 797, в sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:7678) TypeError: неподдерживаемый родительский операнд(ы) для '+': '' и 'Integer Ring'

СПАСИБО

Я нашел последнюю проблему

Мне нужно использовать, теперь он работает!

s2 = s2 + [s1[k]]


person Susan    schedule 28.11.2012    source источник


Ответы (1)


У вас несбалансированные скобки в следующей строке:

if (s1[k] + s1[y]) == ((s1[k] + (s1[k] + 2)):

Я также заметил использование x.is_prime(). Я не знаю, связано ли это с Sage, но мой автономный интерпретатор Python не имеет метода int.is_prime().

Наконец, s1[len(s1)] будет всегда вызывать исключение IndexError, так как индексы s1 идут от нуля до len(s1)-1.

person NPE    schedule 28.11.2012
comment
x.is_prime() работает в Sage, поэтому я полагаю, что это должно быть Sage. - person Susan; 28.11.2012
comment
Да, и на самом деле Sage подготавливает ввод int к специфичному для Sage классу Integer, у которого есть этот метод. - person kcrisman; 28.11.2012