Помогите преобразовать код из Pascal в Python

Вот исходный код:

program Si-Re-Ti;
uses
  SysUtils;

const
y1_t=-3000;
y2_t=250;
y3_t=350;
y12_t=90;
y13_t=150;
y23_t=200;
y123_t=225;
y1_r=10000;
y2_r=350;
y3_r=400;
y12_r=2000;
y13_r=2800;
y23_r=500;
y123_r=900;
var
   Si, Re, Ti: integer;
  b123_t,b12_t, b13_t, b23_t, b12_r, b13_r, b23_r,  b123_r, b1_t, b2_t,b3_t, b1_r, b2_r, b3_r: real;
  tks, ro:array[0..101, 0..101, 0..101] of real;
begin
  b1_t:=y1_t;
  b2_t:=y2_t;
  b3_t:=y3_t;
    b12_t:=4*y12_t-2*y1_t-2*y2_t;
    b13_t:=4*y13_t-2*y1_t-2*y3_t;
    b23_t:=4*y23_t-2*y2_t-2*y3_t;
      b123_t:=27*y123_t-12*(y12_t+y13_t+y23_t)+3*(y1_t+y2_t+y3_t);

  b1_r:=y1_r;
  b2_r:=y2_r;
  b3_r:=y3_r;
    b12_r:=4*y12_r-2*y1_r-2*y2_r;
    b13_r:=4*y13_r-2*y1_r-2*y3_r;
    b23_r:=4*y23_r-2*y2_r-2*y3_r;
      b123_r:=27*y123_r-12*(y12_r+y13_r+y23_r)+3*(y1_r+y2_r+y3_r);

Re:=0;
Si:=100;
Ti:=0;
while Re<=100 do
  begin
  Ti:=0;
  Si:=100-Re;
while Si>=0 do
  begin
tks[Si,Re,Ti]:= b1_t*Si/100+b2_t*Re/100+b3_t*Ti/100+b12_t*Si*Re/10000+b13_t*Si*Ti/10000+b23_t*Re*Ti/10000+b123_t*Si*Re*Ti/1000000;
ro[Si,Re,Ti]:= b1_r*Si/100+b2_r*Re/100+b3_r*Ti/100+b12_r*Si*Re/10000+b13_r*Si*Ti/10000+b23_r*Re*Ti/10000+b123_r*Si*Re*Ti/1000000;
Si:=Si-5;
Ti:=Ti+5;
end;
Re:=Re+5;

end;
writeln('',tks[0,0,100]:0:0);
writeln('',tks[5,0,95]:0:0, ' ', tks[0,5,95]:0:0);

И далее по очереди вывод

Вот нерабочий код из Python:

y1_t = -3000
y2_t = 250
y3_t = 350
y12_t = 90
y13_t = 150
y23_t = 200
y123_t = 225
y1_r = 10000
y2_r = 350
y3_r = 400
y12_r = 2000
y13_r = 2800
y23_r = 500
y123_r = 900

tks = []

b1_t = y1_t
b2_t = y2_t
b3_t = y3_t
tks.append(b1_t)
tks.append(b2_t)
tks.append(b3_t)


b12_t = 4 * y12_t - 2 * y1_t - 2 * y2_t
b13_t = 4 * y13_t - 2 * y1_t - 2 * y3_t
b23_t = 4 * y23_t - 2 * y2_t - 2 * y3_t
tks.append(b12_t)
tks.append(b13_t)
tks.append(b23_t)

b123_t = 27 * y123_t - 12 * (y12_t + y13_t + y23_t) + 3 * (y1_t + y2_t + y3_t)
tks.append(b123_t)

Re = 0
Si = 100
Ti = 0

while Re <= 100:
    Ti = 0
    Si = 100 - Re
    tks.append(Ti)
    tks.append(Si)

while Si >= 0:
    tks1 = b1_t * Si / 100 + b2_t * Re / 100 + b3_t * Ti / 100 + b12_t * Si * Re / 10000 + b13_t * Si * Ti / 10000 + b23_t * Re * Ti / 10000 + b * Si * Re * Ti / 1000000
    tks.append(tks1)

Si = Si - 5
Ti = Ti + 5
Re = Re + 5
tks.append(Si)
tks.append(Ti)
tks.append(Re)

print(tks)

Я новичок и не понимаю в чем дело


Ответы (2 шт):

Автор решения: MazZz3R

Я всего лишь правильно расставил пробелы

y1_t = -3000
y2_t = 250
y3_t = 350
y12_t = 90
y13_t = 150
y23_t = 200
y123_t = 225
y1_r = 10000
y2_r = 350
y3_r = 400
y12_r = 2000
y13_r = 2800
y23_r = 500
y123_r = 900

tks = []

b1_t = y1_t
b2_t = y2_t
b3_t = y3_t
tks.append(b1_t)
tks.append(b2_t)
tks.append(b3_t)


b12_t = 4 * y12_t - 2 * y1_t - 2 * y2_t
b13_t = 4 * y13_t - 2 * y1_t - 2 * y3_t
b23_t = 4 * y23_t - 2 * y2_t - 2 * y3_t
tks.append(b12_t)
tks.append(b13_t)
tks.append(b23_t)

b123_t = 27 * y123_t - 12 * (y12_t + y13_t + y23_t) + 3 * (y1_t + y2_t + y3_t)
tks.append(b123_t)

Re = 0
Si = 100
Ti = 0

while Re <= 100:
    Ti = 0
    Si = 100 - Re
    tks.append(Ti)
    tks.append(Si)

    while Si >= 0:
        tks1 = b1_t*Si/100+b2_t*Re/100+b3_t*Ti/100+b12_t*Si*Re/10000+b13_t*Si*Ti/10000+b23_t*Re*Ti/10000+b123_t*Si*Re*Ti/1000000
        tks.append(tks1)

        Si = Si - 5
        Ti = Ti + 5
    Re = Re + 5

tks.append(Si)
tks.append(Ti)
tks.append(Re)

print(tks)
→ Ссылка
Автор решения: user415530
PROGRAM Sort(input, output);
    CONST
        { Max array size. }
        MaxElts = 50;
    TYPE 
        { Type of the element array. }
        IntArrType = ARRAY [1..MaxElts] OF Integer;

    VAR
        { Indexes, exchange temp, array size. }
        i, j, tmp, size: integer;

        { Array of ints }
        arr: IntArrType;

    { Read in the integers. }
    PROCEDURE ReadArr(VAR size: Integer; VAR a: IntArrType);
        BEGIN
            size := 1;
            WHILE NOT eof DO BEGIN
                readln(a[size]);
                IF NOT eof THEN 
                    size := size + 1
            END
        END;

    { Use quicksort to sort the array of integers. }
    PROCEDURE Quicksort(size: Integer; VAR arr: IntArrType);
        { This does the actual work of the quicksort.  It takes the
          parameters which define the range of the array to work on,
          and references the array as a global. }
        PROCEDURE QuicksortRecur(start, stop: integer);
            VAR
                m: integer;

                { The location separating the high and low parts. }
                splitpt: integer;

            { The quicksort split algorithm.  Takes the range, and
              returns the split point. }
            FUNCTION Split(start, stop: integer): integer;
                VAR
                    left, right: integer;       { Scan pointers. }
                    pivot: integer;             { Pivot value. }

                { Interchange the parameters. }
                PROCEDURE swap(VAR a, b: integer);
                    VAR
                        t: integer;
                    BEGIN
                        t := a;
                        a := b;
                        b := t
                    END;

                BEGIN { Split }
                    { Set up the pointers for the hight and low sections, and
                      get the pivot value. }
                    pivot := arr[start];
                    left := start + 1;
                    right := stop;

                    { Look for pairs out of place and swap 'em. }
                    WHILE left <= right DO BEGIN
                        WHILE (left <= stop) AND (arr[left] < pivot) DO
                            left := left + 1;
                        WHILE (right > start) AND (arr[right] >= pivot) DO
                            right := right - 1;
                        IF left < right THEN 
                            swap(arr[left], arr[right]);
                    END;

                    { Put the pivot between the halves. }
                    swap(arr[start], arr[right]);

                    { This is how you return function values in pascal.
                      Yeccch. }
                    Split := right
                END;

            BEGIN { QuicksortRecur }
                { If there's anything to do... }
                IF start < stop THEN BEGIN
                    splitpt := Split(start, stop);
                    QuicksortRecur(start, splitpt-1);
                    QuicksortRecur(splitpt+1, stop);
                END
            END;
                    
        BEGIN { Quicksort }
            QuicksortRecur(1, size)
        END;

    BEGIN
        { Read }
        ReadArr(size, arr);

        { Sort the contents. }
        Quicksort(size, arr);

        { Print. }
        FOR i := 1 TO size DO
            writeln(arr[i])
    END.
→ Ссылка