Приветствую! есть вот такая мегапрога на бейсике, которую я ныне на питон надумал перенести ( ибо с компиляторами / интерпретаторами под бейсик не всё хорошо - помирающий язык, хоть по мне и удобный и фунциональный)
99 REM ********************************************************************
Cvac = 2.99792458# * 10 ^ 8: REM Gaismas ahtrums vakuumaa in metr/sec^-1
100 REM Programm begin :CLS
101 CLS
g = 0: v = 0: t = 0: h = 0: vp = 0
RESET
PRINT
PRINT "Menu"
PRINT "1.Свободно падающее тело в атмосфере"
PRINT "2.Ускоренно движущееся тело"
PRINT "3.Энциклопедия"
PRINT "4.Quit"
PRINT
INPUT "Ваш выбор"; c
IF c = 1 THEN GOTO 500
IF c = 2 THEN GOTO 102
IF c = 3 THEN GOTO 900
IF c = 4 THEN GOTO 810
GOTO 101
102 CLS : PRINT : PRINT "Menu ": PRINT
PRINT "1.Вычисляем скорость в зависимости от ускорения и расстояния"
PRINT "2.Вычисляем данные для заданной скорости"
PRINT "3.Вычисляем данные по времени"
PRINT "4.Вычисляем данные по расстоянию учитывая разгон и торможение"
PRINT
104 INPUT ; "Ваш выбор"; asad
IF asad = 2 THEN GOTO 400
IF asad = 3 THEN GOTO 770
IF asad = 4 THEN GOTO 800
105 CLS
PRINT
110 INPUT ; "Ускорение в G (Ж)"; a: PRINT : REM G
115 Aconv = a * 9.81
PRINT
120 INPUT ; "Расстояние в Km"; s: PRINT : REM Km
125 Sconv = s * 1000: REM 1024 ;))
130 REM reserved for differenced speed up...
150 Vmax = SQR(Aconv * Sconv)
PRINT
160 PRINT Vmax; " m/s": REM in metr/sec
165 PRINT (Vmax / 1000) * 3600; " Km/h"
170 REM IF INKEY$ <> "" THEN GOTO 170
300 Vmid = ((Vmax / 1000) * 3600) / 2
310 PRINT "Средняя скоpость "; Vmid; " Km/h "
320 PRINT "Потраченное время "; s / Vmid; "h "
325 PRINT " "; (s / Vmid) * 3600; "seconds"
PRINT : PRINT
380 INPUT ; " Если хотите продолжить,нажмите Y "; q$
390 IF q$ = "y" OR q$ = "Y" THEN GOTO 100
395 END
400 CLS : PRINT : INPUT "Задайте конечную скорость в km\h "; vd
PRINT
INPUT ; "Ускорение в G (Ж)"; ad
PRINT
INPUT "Введите начальную скорость обьекта"; v0
PRINT
INPUT "Введите частоту вычислений в секундах "; dt
vp = (vd * 1000) / 3600
g = ad * 9.81
410
t = t + dt
v = v0 + g * t
h = (g * t ^ 2) / 2 - v0 * t
IF v >= vp THEN GOTO 450
IF v >= (Cvac - 100) THEN GOTO 445
GOTO 410
445 PRINT "Вы достигли скорости света в вакууме -1 метр/секунду! "
450 PRINT "Пройденный путь "; h / 1000; "Km "
PRINT " "; (h / 1000) / 150000000; "a.v."
PRINT " "; ((h / 1000) / 150000000) / 206265; " parsec "
PRINT "Потраченное время "; t / 3600; "h "
PRINT " "; (t / 3600) / 24; "Days"
PRINT " "; t; "sec "
PRINT "Достигнутая скорость "; (v / 1000) * 3600; "Km/h "
PRINT " "; v / 1000; "Km/sec"
PRINT " "; v / Cvac; " Lightspeed"
FOR ms = 500 TO 4000 STEP 20
SOUND ms, .1
NEXT ms
BEEP
470 REM IF INKEY$ <> "" THEN GOTO 470
INPUT "continue"; pause$
GOTO 101
499 END
500 CLS
505 PRINT
510 INPUT "Введите начальную высоту обьекта"; h0
515 PRINT
520 INPUT "Введите коефициент атмосферного сопротивления обьекта (Земная атмосфера для человека k~0.004 - 0.003)"; k
525 PRINT
530 INPUT "Введите ускорение свободного падения (на Земле ~9.81)"; g
535 PRINT
540 INPUT "Введите начальную скорость обьекта"; v0
542 PRINT
543 INPUT "Введите коефициент точности расчета в секундах"; dt
545 PRINT
547 t = 0: h = h0: v = v0: CLS : PRINT : PRINT " Скорость тела "; " Высота тела "; " Время падения"
550 GOTO 710
559 CLS : PRINT : PRINT " Скорость тела "; " Высота тела "; " Время падения"
600 REM skaitljoshanas bloks
610 a = g - k * v ^ 2
620 t = t + dt
630 h = h - v * dt
640 v = v + a * dt
650 REM GOTO 710
660 Vkm = (v / 1000) * 3600: Vout$ = "Km\h"
670 GOTO 710
700 CLS : PRINT
710 REM PRINT "Скорость тела в"; Vout$; " Высота тела "; " Время падения"
720 PRINT " "; Vkm; Vout$; " "; h; " "; t
N = N + 1
730 IF h <= 0 THEN GOTO 750
IF N = 22 THEN GOTO 740
735 GOTO 610
740 REM INPUT "continue"; pause$
745 IF INKEY$ = "" THEN GOTO 745
N = 0: GOTO 559
750 END
770 REM peec laika
CLS : PRINT
INPUT " Введите точность исчислений в секундах "; dt
PRINT
INPUT "Введите продолжительность ускорения в секундах"; tf
PRINT
INPUT "Введите ускорение в G (Ж)"; gz
PRINT
g = gz * 9.81
775
t = t + dt
v = g * t
s = (g * t ^ 2) / 2 - t
REM Vmax = sqrt(g * s)
IF t >= tf THEN GOTO 780
GOTO 775
780 PRINT " Затраченное время:"; t; "sec"
PRINT " "; t / 3600; "hour"
PRINT " "; (t / 3600) / 24; "day"
PRINT
PRINT "Достигнутая скорость :"; (v / 1000) * 3600; "Km/h"
PRINT " "; (v / 1000); "Km/sec"
PRINT " "; v; "m/sec"
PRINT " "; ((v / 1000) * 3600) / 150000000; "a.v./hour"
PRINT " "; (((v / 1000) * 3600) * 24) / 150000000; "a.v./day"
PRINT " "; ((((v / 1000) * 3600) * 24) * 30) / 150000000; "a.v./month (30 day)"
PRINT
PRINT "Пройденное расстояние :"; s; "m"
PRINT " "; s / 1000; "Km"
PRINT " "; (s / 1000) / 150000000; "a.v."
FOR ms = 400 TO 1500
SOUND ms, .01
NEXT ms
785 IF INKEY$ = "" THEN GOTO 785
END
800 REM peec attaaluma,ieskaitot ieskr un bremz
CLS : PRINT
810 CLS : PRINT : PRINT : PRINT
820 PRINT " Copyright by J.Ciemgals from Sten systems (2:5100/16.2) :) "
830 PRINT " Mathematic science:A.Usachov "
840 IF INKEY$ = "" THEN GOTO 840
END
900 REM enciklopedija
CLS
PRINT
PRINT " Небольшая справочная,для перехода к следующим страницам,нажмите любую клавишу"
PRINT
PRINT
PRINT " Расстояния"
PRINT
PRINT " Астрономическая Единица (a.v.) =150,000,000 Km (среднее расстояние от солнца до земли)"
PRINT
PRINT " Парсек (Parsec) = 206265 а.е (a.v) = 3.25 св.год (Light years)"
910 IF INKEY$ = "" THEN GOTO 910
930 GOTO 101
гото на питоне фактически нема, есть у кого мысли как меню с переходами по отдельным блокам реализовать? попытался фрагмент пока перенести по рассчёту разгона до заданной скорости по заданному ускорению перенести, но он, цволичь, не работает: блок ввода отрабатывает, потом в выводе идёт 1 2 3 4 5 и всё - никаких текстов, никаких результатов рассчётов... где я тут умудрился напортачить, и как лучще бейсиковский кусок IF v >= vp THEN GOTO 450 IF v >= (Cvac - 100) THEN GOTO 445 GOTO 410 445 PRINT «Вы достигли скорости света в вакууме -1 метр/секунду! » 450 PRINT «Пройденный путь »; h / 1000; «Km » реализовать?
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# paatrinajuma kalkulacija
# PRINT "2.Вычисляем данные для заданной скорости"
# PATRINF.BAS
# light speed in vacuum
Cvac = float (2.99792458) * 10 ** 8
vd = float (raw_input (" input final speed, in km/h: "))
vd_ms = float (vd) / 3.6
print "Final speed in m/s : : ", vd_ms
ad = float (raw_input (" input acceleration in G's: "))
v0 = float (raw_input (" input initial object speed, in km/h: "))
#determination
dt = float (raw_input (" input calculation step, in seconds:: "))
v = 0
vp = 0
t = 0
while v >= vp or v >= (Cvac - 100):
vp = (float (vd) * 1000) / 3600
g = float (ad) * 9.81
t = float (t) + dt
v = float (v0) + g * t
h = (float (g) * t ** 2) / 2 - v0 * t
else :
if v >= (Cvac - 100):
print "Speed of Light -1 m/s reached !!!"
if v >= vp:
print "Travelled distance: "; h / 1000; "Km "
print " "; (h / 1000) / 150000000; "a.v."
print " "; ((h / 1000) / 150000000) / 206265; " parsec "
print " Time spent: "; t / 3600; "h "
print " "; (t / 3600) / 24; "Days"
print " "; t; "sec "
print "Reached speed: "; (v / 1000) * 3600; "Km/h "
print " "; v / 1000; "Km/sec"
print " "; v / Cvac; " Lightspeed"
##
print '\a'
P.S. Да ниспошлёт Летающий Макаронный Монстр на вас свою благодать, ежели вы мне поможете в решении сиих жутких вопросов...:D