ПРИМЕР ПЕРЕВОДА ПРОГРАММЫ ИЗ DELPHI В PYTHON

Ввод переменных из файла. Вывод данных в файл. Использование внешних подпрограмм

1 2 3 4 5 6 7

Рассмотрим перевод программы расчета доли отгона в нефтепереработке

Фрагмент программы на Делфи:

program otgond;

{$APPTYPE CONSOLE}

uses rewob,pechob,rewlib,rewl,SysUtils, Windows, Messages,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
VAR a:string [44];c:string[11];disk:string[5];
tn,rk1,d15,tb,toct,b:real;
i:integer;
procedure r;

//Здесь r - процедура вывода строки исходных данных в таблице. Она будет использоваться позднее.

var n:integer;
begin
i:=i+1; n:=length(c);
writeln(outfl);write(outfl,'I',i:3,'I',a,' ':44-length(a),'I',b:11:4,'I',c,' ':11-n,'I');
end;

begin // начало программы
disk:='c:\d\'; //
Путь к диску, где нах-ся папка с файлом с исходными данными
assign (inpfl,disk+'otgond\otgon.dan');reset(inpfl);
//inpfl-имя файла с исходными данными

read(inpfl,if1,iy,n2,n5); //вводим переменные if1,iy,n2,n5

Теперь будем делать эту программу на Python: Выберем в пункте меню FILE/NEWFILE:

Создаем новый файл на Python

Пишем соответствующий код проседуры r на PYTON:

#r()-функция для вывода строки в таблице для одиночных переменных
def r(): #должны быть скобки
global i #Если внутри операция с внешним параметром, то надо GLOBAL
i+=1
fw.write('I'+str(i).rjust(3)+'I'+a.ljust(44)+'I'+str(b).rjust(11)+'I'+c.ljust(11)+'I'+'\n')
#функция ljust слева пробелы r-справа

Далее надо ввести переменные if1,iy,n2,n5

sline=' ' #переменная для суммирования строк
disk='d:\PYTHON\otgon' #определение диска и папки, где находятся исходные данные

f = open(disk+'\otgon.dan') #открытие файла с исходными данными
for line in f.readlines():
sline=sline+line #чтение каждой строки и суммирование строк в переменную sline
f.close() #закрытие файла

line=','.join(sline.split())# вставка запятой в строку и соединение без пробелов
print(line)
ms=eval('['+line+']')#превращение строки в список (функция split() не сработала), или массив ms
print(ms)
#далее определяем переменные из списка (массива) исходных данных
i=0

if1=int(ms[i]) #0-ой элемент списка if1-количество компонентов смеси

i=i+1;iy=ms[i];i=i+1;n2=ms[i];i=i+1; i=i+1;n5=ms[i]

На следующих страницах см. более полный рагмент программы с переводом на Pyton.3.8

1 2 3 4 5 6 7