Apr-25-2019, 09:11 AM
I have written a few programs in Python but have not done much program translation.
My friend asked me to translate his heating program from Basic to Python.
Is there an easy way to do this? I haven't tried anything yet?
Tha Basic code is below:
1:PRINT"HLOSS85.1":PRINT"":GOTO 3
3:"N"INPUT"INPUT NOTES> ";B$(0):PRINT B$(0):GOTO 3
4:PRINT "":IF L>0 END
5:GOSUB 9:GOTO 104
9:PRINT"------------------------":RETURN
10:"=" PRINT=LPRINT:PRINT"":END
20"L"PRINT=PRINT:PAUSE "PO":END
50:"S" CLEAR:USING
60:DIM B$(0)*24
70:DIM S(6),W(6),G(6),V(0),Z(0),P(0),Q(0),O(0),K(0),N(0):N=1:A(27)=25:R=25:T=600
80:M=21:J=-4:U=5.6:A(30)=55:A(32)=3:GOSUB 9:GOTO 1
104:INPUT"INPUT OUTSIDE TEMP C ";J
105:PRINT"OUTSIDE TEMP ";J;" C
106:INPUT"INPUT ROOM TEMP C ";M
107:C=M-J
108:PRINT"PRINT TEMP ";M;" C":PRINT"TD = ";C;" C
114: GOSUB 9
115:"C"B$(0)="":INPUT"INPUT ROOM NAME ";B$(0)
116:IF B$(0)="" GOTO 115
117:IF B$(0)="*" GOTO 320
120:PRINT B$(0)
125:Y$="N":INPUT"SAME AS LAST ROOM? ";Y$;:IF Y$="Y" GOTO 252
130:S(5)=0:P=0:Q=0:B=0:O=0:K=0k:V=0:O(0)=0:K(0)=0:A=0:G(5)=0:W=0
140:USING:L=0:W=0:H=0:INPUT"INPUT ROOM LENGTH M ";L,"INPUT WIDTH M ";W,"INPUT HEIGHT M ";H
165:Z=LW:V=ZH:IF V=0 GOTO 140
175:PRINT"L=";L;"M W=";W;"M H=";H;"M
176:PRINT"AREA ";Z;" M2
177:PRINT"VOLUME ";V; M3
180:S=1
190:S(S)=LH:GOSUB 500
200:S(S)=WH:GOSUB 500
210:S(S)=S(1):GOSUB 500
220:S(S)=S(2):GOSUB 500
230:S(S)=LW:GOSUB 500
240:S(S)=S(5):GOSUB 500
245:USING:D=M-J:INPUT"INPUT AC/HR ";N;"INPUT TD C ";D
246:PRINT N;" A/C @ ";D;" C TD":B=.33VND
247:INPUT"INPUT SAFETY % ";A(33)
248:IF A(33)>100 GOTO 247
249:A(36)=INT B+INT P+INT Q
250:A(34)=INT((A(33)/100)*A(36))
251:PRINT"SAFETY ";A(33);"% ";INT A(34);"W
252:K=INT A(34)+INT A(36)
253:Y$="":INPUT"IS INFO CORRECT ? ";Y$
254:IF Y$="N" GOTO 115
255:IF Y$<>"Y" GOTO 253
256:Z(0)=S(5)+Z(0):P(0)=INT P+P(0):Q(0)=INT Q+Q(0):V(0)=INT B+V(0);O(0)=O+O(0)
257:N(0)=V+N(0):K(0)+K+K(0):A(35)=A(34)+A(35)
258:PRINT"- ROOM HEAT LOSS -
260:PRINT"FABRIC ";INT Q;"W":PRINT"WINDOW ";INT P;"W":PRINT" VENT ";INT B;"W
261:PRINT"SAFETY ";INT A(34);"W
262:PRINT"TOTAL ROOM LOSS ";K;"W
263:IF V=0 GOTO 265
264:PRINT INT ((K/V)+.5);" W/M3
265:GOSUB 9
266:"H"USING:INPUT"INPUT RADIATOR HT MM ";T
267:PRINT"RAD HEIGHT ";T;"MM
268:PRINT"SINGLE ";INT(544K/T);"MM LENGTH
269:PRINT"DOUBLE ";INT(362/T);"MM
270:GOSUB 9
310:GOTO 115
320:PRINT"
330:"G"USING:PRINT:PRINT"-------- TOTALS --------
350:PRINT"FLOOR AREA ";Z(0);" M2
355:PRINT"VOLUME ";N(0);" M3
410:PRINT"FABRIC LOSS ";INT Q(0);"W
420:PRINT"WINDOW LOSS ";INT P(0);"W
430:PRINT"VENT LOSS ";INT V(0);"W
440:PRINT"SAFETY LOSS ";INT A(35);"W
457:GOSUB 9
460;K=INT Q(0)+INT P(0)+INT V(0)+ INT A(35):PRINT "TOTAL LOSS ";INT K;"W
465:PRINT"AV.HEAT LOSS ";INT((K/M-J))+.5);"W/C
467:IF N(0)=0 GOTO 480
468:PRINT" ";INT((K/N(0)))+.5);"W/M3
470:PRINT USING"###.##";"G VALUE ";(K/(M-J))/N(0);" W/M3/C
480:USING:GOSUB 9
484:GOTO 900
489:A(31)=K+A(29)*1E3
490:INPUT"INPUT BOILER MARGIN % ";A(27)
491:A(28)=A(31)*A(27)/1E2
492:PRINT"BOILER MARGIN":PRINT A(27);"% = ";INT A(28);"W
493:GOSUB 9
494:PRINT" BOILER SIZE
495:PRINT USING"#######.#";" ";(A(31)+A(28))/1E3;"KW
496:USING:GOSUB 9
497:PRINT "":PRINT"
498:END
500:IF S<5 PRINT"WALL ";S
502:IF S=5 PRINT"CEILING/ROOF
504:IF S=6 PRINT"FLOOR
505:X=0:G(S)=0:C=M-J
507:INPUT"INPUT FABRIC U VALUE ";X:GOTO 509
508:GOTO 515
509:INPUT"INPUT TD C";C
510:GOSUB 700
512:IF X>0 GOTO 530
515:PRINT"NO LOSS
530:S=S+1:RETURN
700:IF S<6 INPUT"INPUT GLASS AREA M2 ";G(S)
702:IF G(S)>S(S) GOTO 700
705:W(S)=S(S)-G(S):IF W(S)=S(S) GOTO 710
707:IF S<5 LET A=A+S(S)
710:F=W(S)CX:PRINT W(S);"X";X;"X";C;"=";F;"W
712:Q=Q+F
715:IF S(S)=W(S) RETURN
717:INPUT"INPUT GLASS U VALUE ";U
800:IF S=5 PRINT"ROOFLIGHT":GOTO 805
802:PRINT"WINDOW ";S
805:G=G(S)UC
810:PRINT G(S);"X";U;"X";C;"=";G;"W
815:P=P+G:O=O+G(S)
820:K(0)=G(5)
830:RETURN
900:"D"USING:PRINT"D.H.WATER":INPUT"INPUT NO.OF PEOPLE ";I
905:IF I>0 PRINT 920
910:A(29)=0:PRINT"NONE":GOTO 489
920:INPUT"INPUT LITRE/PERSON ";R
930:PRINT I;"PEOPLE X ";R;"LITRE
940:INPUT"INPUT WARMUP - HRS ";A(32)
942:INPUT"INPUT WATER TD C ";A(30)
945:A(29)=4.2A(A30)IR/3600A(32)
950:PRINT A(32);"HR WARMUP @ ";A(30);"C TD
955:PRINT USING"#####.#";HOT WATER CYL";A(29);"KW
970:USING:GOTO 489
975:"X"USING:INPUT"INPUT FLOOR AREA M2";Z(0):PRINT Z(0)
976:INPUT"INPUT VOLUME M3 ";N(0):PRINT N(0)
977:INPUT"INPUT FABRIC W ";Q(0):PRINT Q(0)
978:INPUT"INPUT WINDOW W ";P(0):PRINT P(0)
979:INPUT"INPUT VENT W "V(0):PRINT V(0)
980:INPUT"INPUT SAFETY W ";A(35):PRINT A(35)
995:GOTO "G"
997:"Z"INPUT"INPUT W";K:PRINT K;"W
998:GOTO "H"
My friend asked me to translate his heating program from Basic to Python.
Is there an easy way to do this? I haven't tried anything yet?
Tha Basic code is below:
1:PRINT"HLOSS85.1":PRINT"":GOTO 3
3:"N"INPUT"INPUT NOTES> ";B$(0):PRINT B$(0):GOTO 3
4:PRINT "":IF L>0 END
5:GOSUB 9:GOTO 104
9:PRINT"------------------------":RETURN
10:"=" PRINT=LPRINT:PRINT"":END
20"L"PRINT=PRINT:PAUSE "PO":END
50:"S" CLEAR:USING
60:DIM B$(0)*24
70:DIM S(6),W(6),G(6),V(0),Z(0),P(0),Q(0),O(0),K(0),N(0):N=1:A(27)=25:R=25:T=600
80:M=21:J=-4:U=5.6:A(30)=55:A(32)=3:GOSUB 9:GOTO 1
104:INPUT"INPUT OUTSIDE TEMP C ";J
105:PRINT"OUTSIDE TEMP ";J;" C
106:INPUT"INPUT ROOM TEMP C ";M
107:C=M-J
108:PRINT"PRINT TEMP ";M;" C":PRINT"TD = ";C;" C
114: GOSUB 9
115:"C"B$(0)="":INPUT"INPUT ROOM NAME ";B$(0)
116:IF B$(0)="" GOTO 115
117:IF B$(0)="*" GOTO 320
120:PRINT B$(0)
125:Y$="N":INPUT"SAME AS LAST ROOM? ";Y$;:IF Y$="Y" GOTO 252
130:S(5)=0:P=0:Q=0:B=0:O=0:K=0k:V=0:O(0)=0:K(0)=0:A=0:G(5)=0:W=0
140:USING:L=0:W=0:H=0:INPUT"INPUT ROOM LENGTH M ";L,"INPUT WIDTH M ";W,"INPUT HEIGHT M ";H
165:Z=LW:V=ZH:IF V=0 GOTO 140
175:PRINT"L=";L;"M W=";W;"M H=";H;"M
176:PRINT"AREA ";Z;" M2
177:PRINT"VOLUME ";V; M3
180:S=1
190:S(S)=LH:GOSUB 500
200:S(S)=WH:GOSUB 500
210:S(S)=S(1):GOSUB 500
220:S(S)=S(2):GOSUB 500
230:S(S)=LW:GOSUB 500
240:S(S)=S(5):GOSUB 500
245:USING:D=M-J:INPUT"INPUT AC/HR ";N;"INPUT TD C ";D
246:PRINT N;" A/C @ ";D;" C TD":B=.33VND
247:INPUT"INPUT SAFETY % ";A(33)
248:IF A(33)>100 GOTO 247
249:A(36)=INT B+INT P+INT Q
250:A(34)=INT((A(33)/100)*A(36))
251:PRINT"SAFETY ";A(33);"% ";INT A(34);"W
252:K=INT A(34)+INT A(36)
253:Y$="":INPUT"IS INFO CORRECT ? ";Y$
254:IF Y$="N" GOTO 115
255:IF Y$<>"Y" GOTO 253
256:Z(0)=S(5)+Z(0):P(0)=INT P+P(0):Q(0)=INT Q+Q(0):V(0)=INT B+V(0);O(0)=O+O(0)
257:N(0)=V+N(0):K(0)+K+K(0):A(35)=A(34)+A(35)
258:PRINT"- ROOM HEAT LOSS -
260:PRINT"FABRIC ";INT Q;"W":PRINT"WINDOW ";INT P;"W":PRINT" VENT ";INT B;"W
261:PRINT"SAFETY ";INT A(34);"W
262:PRINT"TOTAL ROOM LOSS ";K;"W
263:IF V=0 GOTO 265
264:PRINT INT ((K/V)+.5);" W/M3
265:GOSUB 9
266:"H"USING:INPUT"INPUT RADIATOR HT MM ";T
267:PRINT"RAD HEIGHT ";T;"MM
268:PRINT"SINGLE ";INT(544K/T);"MM LENGTH
269:PRINT"DOUBLE ";INT(362/T);"MM
270:GOSUB 9
310:GOTO 115
320:PRINT"
330:"G"USING:PRINT:PRINT"-------- TOTALS --------
350:PRINT"FLOOR AREA ";Z(0);" M2
355:PRINT"VOLUME ";N(0);" M3
410:PRINT"FABRIC LOSS ";INT Q(0);"W
420:PRINT"WINDOW LOSS ";INT P(0);"W
430:PRINT"VENT LOSS ";INT V(0);"W
440:PRINT"SAFETY LOSS ";INT A(35);"W
457:GOSUB 9
460;K=INT Q(0)+INT P(0)+INT V(0)+ INT A(35):PRINT "TOTAL LOSS ";INT K;"W
465:PRINT"AV.HEAT LOSS ";INT((K/M-J))+.5);"W/C
467:IF N(0)=0 GOTO 480
468:PRINT" ";INT((K/N(0)))+.5);"W/M3
470:PRINT USING"###.##";"G VALUE ";(K/(M-J))/N(0);" W/M3/C
480:USING:GOSUB 9
484:GOTO 900
489:A(31)=K+A(29)*1E3
490:INPUT"INPUT BOILER MARGIN % ";A(27)
491:A(28)=A(31)*A(27)/1E2
492:PRINT"BOILER MARGIN":PRINT A(27);"% = ";INT A(28);"W
493:GOSUB 9
494:PRINT" BOILER SIZE
495:PRINT USING"#######.#";" ";(A(31)+A(28))/1E3;"KW
496:USING:GOSUB 9
497:PRINT "":PRINT"
498:END
500:IF S<5 PRINT"WALL ";S
502:IF S=5 PRINT"CEILING/ROOF
504:IF S=6 PRINT"FLOOR
505:X=0:G(S)=0:C=M-J
507:INPUT"INPUT FABRIC U VALUE ";X:GOTO 509
508:GOTO 515
509:INPUT"INPUT TD C";C
510:GOSUB 700
512:IF X>0 GOTO 530
515:PRINT"NO LOSS
530:S=S+1:RETURN
700:IF S<6 INPUT"INPUT GLASS AREA M2 ";G(S)
702:IF G(S)>S(S) GOTO 700
705:W(S)=S(S)-G(S):IF W(S)=S(S) GOTO 710
707:IF S<5 LET A=A+S(S)
710:F=W(S)CX:PRINT W(S);"X";X;"X";C;"=";F;"W
712:Q=Q+F
715:IF S(S)=W(S) RETURN
717:INPUT"INPUT GLASS U VALUE ";U
800:IF S=5 PRINT"ROOFLIGHT":GOTO 805
802:PRINT"WINDOW ";S
805:G=G(S)UC
810:PRINT G(S);"X";U;"X";C;"=";G;"W
815:P=P+G:O=O+G(S)
820:K(0)=G(5)
830:RETURN
900:"D"USING:PRINT"D.H.WATER":INPUT"INPUT NO.OF PEOPLE ";I
905:IF I>0 PRINT 920
910:A(29)=0:PRINT"NONE":GOTO 489
920:INPUT"INPUT LITRE/PERSON ";R
930:PRINT I;"PEOPLE X ";R;"LITRE
940:INPUT"INPUT WARMUP - HRS ";A(32)
942:INPUT"INPUT WATER TD C ";A(30)
945:A(29)=4.2A(A30)IR/3600A(32)
950:PRINT A(32);"HR WARMUP @ ";A(30);"C TD
955:PRINT USING"#####.#";HOT WATER CYL";A(29);"KW
970:USING:GOTO 489
975:"X"USING:INPUT"INPUT FLOOR AREA M2";Z(0):PRINT Z(0)
976:INPUT"INPUT VOLUME M3 ";N(0):PRINT N(0)
977:INPUT"INPUT FABRIC W ";Q(0):PRINT Q(0)
978:INPUT"INPUT WINDOW W ";P(0):PRINT P(0)
979:INPUT"INPUT VENT W "V(0):PRINT V(0)
980:INPUT"INPUT SAFETY W ";A(35):PRINT A(35)
995:GOTO "G"
997:"Z"INPUT"INPUT W";K:PRINT K;"W
998:GOTO "H"