Форум сайта python.su
В общем - даётся тяжело.
глобал/локал так и не смог понять(
В 3д графике это понятно в принципе..
И что такое “b-” ?
а если обматюкать это так?:
01 from math import *
02 DO=55.9957974644
03 print "old DO =",DO
04 L4=30.280
05 L5=36.775
06 dd=7
07 def main(DO):
08 AP=acos(DO/(2*L5))
09 AS=acos(DO/(2*L4))
10 APS=AP-AS
11 dDO=((tan(AP)-tan(AS)-dd/DO)/APS-1)*DO
12 DOn=DO+dDO
13 print "new DO =",DOn
14 print "dDO =",dDO
15 main(DO)
Офлайн
ilalexeyА никто не говорил, что это будет легко ;)
В общем - даётся тяжело.
ilalexeyэто не b- конструция b-=1 идентична такой b=b-1
И что такое “b-” ?
igor.kaistвот же решение, просто малость подумать надо и написать цикл, применительно к вашей задаче :)a=0
b=20
def do():
global b
b-=1
while a<>b:
do()
Офлайн
Насколько я понял тебе вот что надо (на работоспособность и оптимальность не проверял!):
from math import *
L4=30.280
L5=36.775
dd=7
DO=55.9
print "old DO =",DO
newDO = DO
AP=acos(newDO/(2*L5))
AS=acos(newDO/(2*L4))
APS=AP-AS
dDO=((tan(AP)-tan(AS)-dd/newDO)/APS-1)*newDO
newDO+=dDO
print "new DO =",newDO
print "dDO =",dDO
while DO != new DO:
AP=acos(newDO/(2*L5))
AS=acos(newDO/(2*L4))
APS=AP-AS
dDO=((tan(AP)-tan(AS)-dd/newDO)/APS-1)*newDO
newDO+=dDO
print "new DO =",newDO
print "dDO =",dDO
Отредактировано (Фев. 21, 2009 09:56:41)
Онлайн
Есть другая проблема - цикл не останавливается.
На самом деле равенство должно происходить, если число округлено до скажем 10 знака после запятой.
Питон щитает намного точное число и лиш высвечивает не много. В оригинале равенство там не может получиться на все 100 процентов.
Офлайн
Иногда вместо
DO != newDO
abs(DO-newDo)>eps
Офлайн