LINUX.ORG.RU

Python и меню / перенос прогы с бейсика...?

 , ,


0

1

Приветствую! есть вот такая мегапрога на бейсике, которую я ныне на питон надумал перенести ( ибо с компиляторами / интерпретаторами под бейсик не всё хорошо - помирающий язык, хоть по мне и удобный и фунциональный)

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

★★

Последнее исправление: wisedraco (всего исправлений: 1)

В Job, либо показывай что уже сделал.

Goto реализовывается через подпрограммы (для чего он, собственно, и юзается в Basic).

Вообще странный вопрос, что, никогда не рисовал блок-схемы и не транслировал их в код?

PPP328 ★★★★★
()

«Если вы знаете пистон, то вы знаете только пистон, а если вы знаете васик, то вы програмизд.» Так чтоль?

ashot ★★★★
()
Ответ на: комментарий от vvn_black

просмотрел по быстрому - в принципе

>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...     x = 0
...     print('Negative changed to zero')
... elif x == 0:
...     print('Zero')
... elif x == 1:
...     print('Single')
... else:
...     print('More')
...
More

выглядит более-менее подходящим для моих нужд, но непонятно, что происходит при наступлении условий elif? скажем «не ноль» - печатается zero, и дальше идёт исполнение кода, который в месте More ? тоесть нормального ветвения по блокам через гото, на первый взгляд, не организовать? равно как и возвращение в меню после исполнения отдельного выбранного блока рассчётов?

щас допишу статейку про эксплуатацию мопедки в этом году, и начну плотнее сиё ковырять - надеюсь, к тому времени тут мне чтото по поводу моих вопросов прояснят таки...;)

wisedraco ★★
() автор топика
Ответ на: комментарий от ashot

«Если вы знаете пистон, то вы знаете только

не знаю ни того, ни другого, но даже при моём уровне незнания у меня складывается впечтление, что бейсик намного проще и более приспособлен для моих задачь - то что на бейсике элементарно делается, на питоне или через задницу, или лишние телодвижения, или вообще непонятно, как реализовать вообще...:(

wisedraco ★★
() автор топика
Ответ на: комментарий от anonymous

О ббожечки там в коде есть GoTo, мои глаза кровоточат!

Ну, goto и goto, какие проблемы то? И, вообще, кто в басике не использовал goto — тот лох.

justAmoment ★★★★★
()
Ответ на: комментарий от wisedraco

у меня складывается впечтление, что бейсик намного проще

Неправильное впечатление. Это совершенно разные языки, и навыки в одном, не помогут в другом. Надо хоть немного изучить. И если уж учишь с нуля, бери 3-ий, нафиг тебе второй?

ashot ★★★★
()
Ответ на: комментарий от ashot

И если уж учишь с нуля, бери 3-ий, нафиг тебе второй?

bash-3.2$ python --version Python 2.7.10

такой на макось поставился - почему второй, а не третий - незнай...

wisedraco ★★
() автор топика

попытался фрагмент пока перенести по рассчёту разгона до заданной скорости по заданному ускорению перенести, но он, цволичь, не работает: блок ввода отрабатывает, потом в выводе идёт

Фрагменты кода никуда переносить не надо. Нужно понять общий смысл программы и занова составить алгоритм работы, пользуясь парадигмами того языка, который ты выбрал, питон так питон (правда, я не понял нахрена тут питон нужен, когда тут базового «C» без плюсов за глаза, для рисования менюшек хоть ncurses, хоть что угодно).

p.s. побуквенный копипастинг и промто-перевод на другой язык, никогда до добра не доводят.

justAmoment ★★★★★
()
Последнее исправление: justAmoment (всего исправлений: 1)
Ответ на: комментарий от justAmoment

правда, я не понял нахрена тут питон нужен, когда тут базового «C» без плюсов за глаза

Ты предполагаешь знание си у ТСа?

ashot ★★★★
()
Ответ на: комментарий от justAmoment

когда тут базового «C» без плюсов за глаза

хосспаде, ты б ещё ассемблер бы упомянул-то! я ж ниразу не програмиист, даже и близко, всё что у меня есть - бейсик на бк-0010, потом спектрумы с ихним подвидом бейсика, потом немного в силу своего разумения поваял на повербейсике под досом. вот теперь хочу кое чего из того на питон перетащить, ибо бейсик уже почти полный труп, а питон на всех ОС практически в ассортименте есмь.

допмодули для гото не хочу использовать дабы была полная совместимость с широко распространённым, без прикручивания допмодулей...

wisedraco ★★
() автор топика
Ответ на: комментарий от ashot

Не, не настоящий, а скорее всего QBasic какой-нибудь
В настоящем номера строк нельзя было пропускать :)

anonymous
()
Ответ на: комментарий от justAmoment

Кто писал басике тот старпёр! Шах и мат! Бу-ха-ха!

а вообще GOTO это аццкая жесть (не зря же от него в последствии отказались), лично я бы в таком коде и разбираться не стал

anonymous
()
Ответ на: комментарий от ashot

Не-не-не, если брать бейсики моего возраста, то они не умели опускать номера строк и многобуквенные переменные. А если брать современные, то:

test.bas(1) error 145: Only valid in -lang deprecated or fblite or qb in '99 REM ********************************************************************'
test.bas(2) error 41: Variable not declared, Cvac in 'Cvac = 2.99792458# * 10 ^ 8: REM Gaismas ahtrums vakuumaa in metr/sec^-1'
test.bas(4) error 145: Only valid in -lang deprecated or fblite or qb in '100 REM Programm begin :CLS'
test.bas(5) error 145: Only valid in -lang deprecated or fblite or qb in '101 CLS'
test.bas(6) error 41: Variable not declared, g in 'g = 0: v = 0: t = 0: h = 0: vp = 0'
test.bas(15) error 41: Variable not declared, c in 'INPUT "Ваш выбор"; c'
test.bas(16) error 9: Expected expression, found 'c' in 'IF c = 1 THEN GOTO 500'
test.bas(16) error 3: Expected End-of-Line, found 'c' in 'IF c = 1 THEN GOTO 500'
test.bas(17) error 9: Expected expression, found 'c' in 'IF c = 2 THEN GOTO 102'
test.bas(17) error 3: Expected End-of-Line, found 'c' in 'IF c = 2 THEN GOTO 102'
test.bas(17) error 132: Too many errors, exiting

Ну ладно, пробуем deprecated
fbc -lang deprecated test.bas
test.bas(86) error 10: Expected '=', found 'ms'
SOUND ms, .1
      ^
test.bas(173) error 10: Expected '=', found 'ms'
SOUND ms, .01

Вангую, что досовский qbasic, но он давно сдох, поэтому прогу сначала надо переписать с мёртвого языка на бейсик.

redgremlin ★★★★★
()

Тут же вроде как прописные истины ? Разве нет соотв библиотеки для этого ?

Jopich1
()
Ответ на: комментарий от redgremlin
	       Welcome to PowerBASIC 2.1
		       -------------------------

    This README file contains information that will be useful
    and of interest to you.  Please read it in its entirety,
    referring to it when you encounter problems not addressed
    in the PowerBASIC 2.0 User's Manual, Reference Guide, or
    the PowerBASIC 2.1 supplementary documentation.


    What's in this file
    -------------------

    1.  How to install PowerBASIC 2.1
    2.  How to get help
    3.  Corrections/additions to the PowerBASIC 2.0 manuals
    4.  Manual corrections/additions from the PowerBASIC 2.0 README file
    5.  Tips about converting Turbo Basic programs to PowerBASIC
    6.  List of files on the disks


    How to install PowerBASIC 2.1
    -----------------------------

    PowerBASIC 2.1 is provided in compressed format on two 360K or one
    720K floppy diskette(s).  Using the INSTALL.EXE program provided,
    you can install PowerBASIC 2.1 onto your hard disk, or onto one, two,
    or three floppy diskettes (depending on the density of the diskettes:
    3 360K, 2 720K, or 1 1.2 or 1.44M).  If you are installing PowerBASIC
    2.1 on a system without a hard disk, you must copy the DOS command
    processor (normally COMMAND.COM) to each PowerBASIC 2.1 distribution
    diskette before beginning the installation process.  To begin, just
    insert distribution disk #1 in your drive, execute INSTALL, and
    follow the program's instructions.

под досом 7.1 ( винь98 се? ) и в досбоксе вполне себе запускается...

wisedraco ★★
() автор топика
Ответ на: комментарий от wisedraco

хосспаде, ты б ещё ассемблер бы упомянул-то! я ж ниразу не програмиист, даже и близко, всё что у меня есть - бейсик на бк-0010, потом спектрумы с ихним подвидом бейсика, потом немного в силу своего разумения поваял на повербейсике под досом.

так конкретно вот это проще в рабочий код на си превратить, чем на питон.

вот теперь хочу кое чего из того на питон перетащить, ибо бейсик уже почти полный труп, а питон на всех ОС практически в ассортименте есмь.

для кроссплатформенности, тогда уж проще всё на джаваскрипте наваять, чем так мучиться с питоном.

justAmoment ★★★★★
()
Ответ на: комментарий от redgremlin

Не спорю. Я думал ты про всякие вижуалообразные.

ashot ★★★★
()

Ты вроде bash ковырял, перепиши лучше на нём.

ashot ★★★★
()
Ответ на: комментарий от anonymous

При чём тут ассемблер, когда речь о высокоуровневом языке программирования общего назначения?

anonymous
()

на бейсике пишут ленейную лапшу а на писюнчике мелкие неделимые сущности

думай о гото как о процедурах и все будет ок

def menu(label, type=str): return type(input(«choice (1..4) »))

def calc_1(): print(f"result #1 {variant * 2}")

if «__main__» == __name__: calc = {1: calc_1, 2: calc_2, ..., 0: quit}[menu(«wat calc? (0 - quit)», int)]()

anonymous
()
Ответ на: комментарий от wisedraco

модули автоматом устанавливаются из requirements из setup.py или ячкрез requirements.txt, даже в базовой системе полно сторонних модулей

anonymous
()
Ответ на: комментарий от wisedraco

то что на бейсике элементарно делается, на питоне или через задницу

Ты теперь мой любимый стендапер

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Ты теперь мой любимый

ц вас 2 евро, будьте любезны ! :D

PS народ, ну что, по факту ниодного годного практичского совета небудет?

писать на баше или си - эт конечно интересно, но мне важно, дабы я мог потом чтото там менять, улучщать и расширять, так что питон, раз уж я его начал ковырять, будет оптимальным, дабы сущностей не умножать, имхо.

к джаве испытываю сильный неприязнь (ц) мимино...:D

wisedraco ★★
() автор топика
Ответ на: комментарий от justAmoment

так конкретно вот это проще в рабочий код на си превратить, чем на питон.

Да ну брось, на питоне явно проще для нуба такое наваять.

golodranez ★★★★
()
Ответ на: комментарий от wisedraco

народ, ну что, по факту ниодного годного практичского совета небудет?

тебе уже дали правильный практический совет:

думай о гото как о процедурах и все будет ок

golodranez ★★★★
()
Ответ на: комментарий от golodranez

тебе уже дали правильный практический совет:

эт для тебя он, можт, и практический, а для меня - белиберда, я глупый... мне бы на пальцах, и желательно с наглядным практическим примером, тогда я пойму...:(

wisedraco ★★
() автор топика
Ответ на: комментарий от wisedraco

я глупый... мне бы на пальцах, и желательно с наглядным практическим примером

В Job, либо показывай что уже сделал.

vvn_black ★★★★★
()

гото на питоне фактически нема

Я бы сперва почитал, чтобы узнать для чего этот goto нужен и чем его можно заменить

Deleted
()
Ответ на: комментарий от wisedraco

такой на макось поставился

это ответ бухгалтерши, а не it-шника.

SevikL ★★★★★
()
Ответ на: комментарий от wisedraco

bash-3.2$ python --version Python 2.7.10
такой на макось поставился - почему второй, а не третий - незнай...

Ойбай...

:D

Deleted
()
Ответ на: комментарий от vvn_black

так наверху ж есть:

но оно, во первых, вообще не работает в вычислительной части, а во вторых я сильно неуверен что кусок :

else :
    if v >= (Cvac - 100):
        print "Speed of Light -1 m/s reached !!!"
    if v >= vp:
    
        print "Travelled distance:  "; 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'
wisedraco ★★
() автор топика
Ответ на: комментарий от wisedraco

Вот, сам подумай, какой интерес твои портянки читать?

Иди от задачи, разбей её на более мелкие. Пробуешь сделать, тестишь, не работает - показываешь и спрашиваешь.

Иначе, только за вознаграждение если кто захочет с тобой заниматься.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Меня тоже дежа вю преследовало. Наверное, емуипрограмма опять срочно потребовалась. Новый год всё-таки, самое время слетать на Альфу Центавра.

grem ★★★★★
()
Ответ на: комментарий от wisedraco

ниодного годного практичского совета небудет?

Я бы, например, не прочь дать тебе практический совет кроме очевидных: «Не используй goto» и «Почитай книжку по питону». Но вот только я вообще не могу понять логику твоего кода из-за обилия этих самых goto, и, думаю, что другие форумчане со мной солидарны. Нечитаемо. Лучше б словами описал свою задачу.

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Вот пока вы тут прикалываетесь, альфацентавра всё отдаляется от нас, а расстояние - эт энергия :)) прошлую тему на питона просматривал, само собой, но к сожалению не узрел там ответов на нынешние вопросы...

ок, к текущему моменту: вот тут цикл есть.

v: текущая скорость обьекта при очередном прогоне. каждый прогон добавляет по (dt)секунд времени, и на основе этого рассчитывает новую скорость и пройденное расстояние руководствуясь заданным ускорением g (h). vp: - заданная скорость при которой рассчёты надобно остановить, и вывести текущие значения. Cvac: скорость света в вакууме. при достижении оной рассчёты опять же след остановить и вывести значения, даже если vp не достигнута ( задана больше скорости света). вот, у мну тут нихрена похоже, цикл не останавливается, хотя  v явно больше vp...

while v <= vp or v <= float (Cvac - 100):
    print "start of calculation block!"

    g = float (ad) * 9.81
    t = float (t) + dt
    v = float (v0) + g * t
    h = (float (g) * t ** 2) / 2 - v0 * t
    print "speed now is ", v, "m/s!"
else :
    if v >= (Cvac - 100):
        print "Speed of Light -1 m/s reached !!!"
    elif 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"
    
wisedraco ★★
() автор топика
Ответ на: комментарий от wisedraco

PS народ, ну что, по факту ниодного годного практичского совета небудет?

Годный практический совет: прочти книгу по основам питона и будешь с легкостью решать имеющиеся задачи.

Например эту: ftp://www.mans.edu.eg/Learn/Python/pdf/@Beginning Python From Novice to Profe...

Для твоей программы судя по-всему хватит и половины книги, если не меньше.

Ghostwolf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.