У меня вопрос по алгоритму префиксной суммы - PullRequest
0 голосов
/ 23 марта 2020
import time,random

n=int(input("put your number:"))

X=[random.randint(-999,999) for i in range(n)]

print(X)
#pr1 start
before1 = time.clock()
def prefixSum1(X, n):   # code for prefixSum1
    for i = 0 to n-1 do
        S[i] = 0
        for j = 0 to i do
            S[i]=S[i]+X[j]      
    return (S)
after1 = time.clock()
#pr2 start
before2 = time.clock()
def prefixSum2(X, n):   # code for prefixSum2
    S[0]= X[0]
    for i = 1 to n-1 do
        S[i]=S[i-1]+X[i]
    return (S)
after2 = time.clock()
#
random.seed()   
print(after1 - before1)
print(after2 - before2)

Это мой код, и я пытаюсь сделать так, чтобы я случайно генерировал массив X от -999 до 999 и проверял время двух алгоритмов. Но всякий раз, когда я запускаю код, он показывает>

Makefile:6: recipe for target 'py3_run' failed
    make: *** [py3_run] Error 1
      File "Main.out", line 11
        for i = 0 to n-1 do
              ^

SyntaxError: invalid syntax

Я понятия не имею, что не так с моим кодом. Я попытался найти на inte rnet, но, кажется, они такие же, как я ...

1 Ответ

1 голос
/ 23 марта 2020

Ваш код не использует действительный синтаксис python для ваших циклов for; документация по операторам for четко описывает синтаксис. Короче говоря, вам нужно изменить

for i = 0 to n-1 do

на

for i in range(n - 1):

и

for i = 1 to n-1 do

на

for i in range(1, n - 1):

Вы можете проверить документация для range, чтобы узнать, как это работает.

...