element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Experts, Learning and Guidance
  • Technologies
  • More
Experts, Learning and Guidance
Ask an Expert Forum BASIC translation to Python
  • Blog
  • Forum
  • Documents
  • Leaderboard
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Experts, Learning and Guidance to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Locked Locked
  • Replies 48 replies
  • Answers 24 answers
  • Subscribers 293 subscribers
  • Views 10042 views
  • Users 0 members are here
  • translation
  • python
Related
See a helpful answer?

Be sure to click 'more' and select 'suggest as answer'!

If you're the thread creator, be sure to click 'more' then 'Verify as Answer'!

This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

BASIC translation to Python

tommy2k19
tommy2k19 over 6 years ago

I have written a few very basic 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"

  • Cancel

Top Replies

  • jomoenginer
    jomoenginer over 6 years ago in reply to tommy2k19 +4 suggested
    There is no GOTO or GOSUB in Python. It is used in C but discouraged in most cases; it is quite common in BASIC. You can think of a GOTO as in an if-elif-else case or just replace the GOTO from BASIC with…
  • jomoenginer
    jomoenginer over 6 years ago in reply to Jan Cumps +4
    Jan Cumps wrote: If it’s a good friend, show this thread. If it is not a very good friend, show the thread then run away . Or it would completely offend the friend and create a negative view of the folks…
  • jc2048
    jc2048 over 6 years ago in reply to Jan Cumps +4 suggested
    The Sharp 1251 seems to have been sold by Tandy rebadged as the PC-3. There's a user manual here that includes a reference for their version of BASIC. https://ia601707.us.archive.org/13/items/PC-3_Owners_Manual_19xx_Tandy…
Parents
  • tommy2k19
    0 tommy2k19 over 6 years ago

    Thankyou;

     

    Here is a video of what it is meant to do:

     

    https://www.youtube.com/watch?v=L9E2rDVEvgI&feature=youtu.be

     

    I have written programs as I said, but I have no experience of GOSUB and GOTO!, and I have very little or no idea of how they become functions.

     

    Could you give me some 'starter code'?!

     

    Also, what are the functions in the above code?

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Jan Cumps
    0 Jan Cumps over 6 years ago in reply to tommy2k19

    image

    Diagram.

    • Cancel
    • Vote Up +3 Vote Down
    • Cancel
Reply
  • Jan Cumps
    0 Jan Cumps over 6 years ago in reply to tommy2k19

    image

    Diagram.

    • Cancel
    • Vote Up +3 Vote Down
    • Cancel
Children
  • tommy2k19
    0 tommy2k19 over 6 years ago in reply to Jan Cumps

    Thankyou; I'm going to have to find out the equivalent of GOTO statements in Python!

     

    I'll try and write the code myself but I may still get stuck!

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Jan Cumps
    0 Jan Cumps over 6 years ago in reply to tommy2k19

    Maybe a Python expert chimes in (I don't know the language, I just can read it).

     

    GOTOs are things from 1970 image - I don't know if Python supports it. What you see above is an example of what they call spaghetti code.

    The program should be further analysed to detect the flow of control. Then translated to structured language.

    This is a logic exercise. Once you grasp the flow, you can start the conversion.

    • Cancel
    • Vote Up +2 Vote Down
    • Cancel
  • tommy2k19
    0 tommy2k19 over 6 years ago in reply to Jan Cumps

    Thankyou; hopefully!

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • michaelkellett
    0 michaelkellett over 6 years ago in reply to tommy2k19

    Hello Tom,

     

    In order to easliy translate a programme from one language to another you need to be expert in the languages or a very good programmer.

     

    Nothing is impossible, George Borrow (1803 - 1881) translated the Bible into Manchu - a language which he did not speak - but he was good at learning new languages and translating the Bible.

     

    However, it may be possible to avoid the need for translation - what machine did the prog run on when written and what would you like it run on now ?

     

    MK

    • Cancel
    • Vote Up +2 Vote Down
    • Cancel
  • tommy2k19
    0 tommy2k19 over 6 years ago in reply to michaelkellett

    It was run originally on a BBC Micro but I have been told it can run on Windows 10, which I want it to run on, if possible.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Jan Cumps
    0 Jan Cumps over 6 years ago in reply to tommy2k19

    You could try to run it under this emulator, compatible with Windows 10:

     

    https://sourceforge.net/projects/pcbasic/

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • tommy2k19
    0 tommy2k19 over 6 years ago in reply to Jan Cumps

    Thankyou.

    I still want a go at writing it in Python though!

    • Cancel
    • Vote Up +2 Vote Down
    • Cancel
  • jomoenginer
    0 jomoenginer over 6 years ago in reply to tommy2k19

    There is no GOTO or GOSUB in Python.  It is used in C but discouraged in most cases; it is quite common in BASIC.

     

    You can think of a GOTO as in an if-elif-else case or just replace the GOTO from BASIC with a method in Python.  I suppose another option would be a 'try-except' but that would be more for exception handling.

    The GOSUB is basically the same as a method definition (def) in Python with a return.

     

    One note, when posting code, please click on the '>>' at the top of the edit window and select 'Syntax Highlighting' and the code type you are posting.

    • Cancel
    • Vote Up +4 Vote Down
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube