Попробуйте это для суммирования вашей второй диагонали:
sum(a[i][n-i-1] for i in range(n))
Внутренний цикл обращается к этим записям:
>>> n = 3
>>> [(i, n-i-1) for i in range(n)]
[(0, 2), (1, 1), (2, 0)]
И суммированное значение этой диагонали для вашей матрицы выборки:
>>> n = 3
>>> sum(a[i][n-i-1] for i in range(n))
19
Ошибка в вашем коде состоит в том, что вы используете одно и то же выражение для обоих измерений:
a[n-i-1][n-i-1]
, который снова обработает первую диагональ в обратном порядке [(2, 2), (1, 1), (0, 0)]
и даст вам одинаковую сумму в два раза.
Это определенно похоже на проблему с правами доступа. Вы запускаете свой код в службе Windows? Служба обычно работает как локальная система, которая может не иметь разрешения на доступ к объектной модели Word. Кроме того, если Word уже запущен с использованием учетных данных другого пользователя, ваша программа может не иметь доступа к нему через COM с использованием других учетных данных. Офисные приложения, как правило, представляют собой единичные экземпляры, что, кажется, усугубляет эту проблему.
Похоже, у вас может быть проблема с правами доступа в DCOM. Попробуйте отредактировать разрешения Word в конфигурации DCOM.
Похоже, именно это вы и испытываете.
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/006cbbac-101a-40ea- ae16-d59a7a2da8b1
У меня возникла та же проблема, и обнаруженная мной проблемная область была «конфигурация безопасности для Microsoft Word в DCOM». По следующей ссылке вы можете найти пошаговое руководство, чтобы узнать, как настроить компоненты в DCOM, повторите эти шаги для WORD, и ваша проблема будет решена.
http://www.biocompsystems.com/_public/DCOMConfigurationStepbyStepForXP .doc
Спасибо, Сушил Джиндер
У меня была такая же проблема в Windows 2008 R2. Закончил с использованием этого сообщения: http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/65a355ce-49c1-47f1-8c12-d9cf5f23c53e
, а затем смена пользователя удостоверения личности олицетворения в web.config на другое пользователь, чтобы решить эту проблему.
Я уверен, что существует комбинация решений.