Anonymní profil Roman – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Roman – Programujte.comAnonymní profil Roman – Programujte.com

 

Příspěvky odeslané z IP adresy 89.102.239.–

Roman
Python › Syntax Error, ale prečo?
28. 10. 2013   #182870

#2 z

Veľmi pekne ďakujem za odpoveď. Chcel by som sa ešte opýtať na na druhý  While loop. Chcem aby mi počítalo beta1d. Chcem aby mi ho počítalo dovtedy, kým nenájde hodnotu, ktorá je beta1d>=beta1dpoz. To má dosiahnúť tak,že otestuje beta1d=deltad-gammad1 a keď je ta1d<beta1dpoz,tak pridá k r1, ktorá vstupuje do loop-u hodnotu 0.1 a otestuje to celé znova r1=r1+0.1. No bohužiaľ mi to nepočíta resp. nepridáva 0.1 :( . Kde robím chybu? Alebo som nesprávne pochopil syntaxu? 

ďakujem za vysvetlenie a pomoc

beta1d=None

while beta1d>=beta1dpoz:
 
    xs2=r3*math.sin(beta2r)     
    ys2=r1-r3*math.cos(beta2r) 
    kruh1=math.pow(xs2,2)+math.pow(ys2,2)                           
    kruh2=math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*math.cos(beta2r)    
    xA1=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))+(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
    xA2=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))-(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
    xAmat=[xA1,xA2]
    xA=max(xAmat)
    p=math.sqrt(2*math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*(math.sin(beta2r)+math.cos(beta2r)))
    if r2>p:    
        yA=math.sqrt(math.pow(r1,2)-math.pow(xA,2))
    elif r2<p:
        yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2))
    print(r1)   
    gamma=math.pi/2-math.atan(yA/xA)            
    gammad=gamma*180/math.pi                    
    #print ('gamma',gammad)
    L=2*math.pi*r1*gammad/360;                   
    #print('L',L)
    b=abs(abs(xs2)-abs(xA));               
    a=abs(abs(ys2)-abs(yA));               
    gammad1=gammad-90;                      
    etad=math.atan(b/a)*180/math.pi;        
    deltad=180-90-etad;                     
    try:
	beta1d=deltad-gammad1                
    except beta1d<beta1dpoz:
        r1=r1+0.1

print('r1',r1)
print('beta1d',beta1d)
Roman
Python › Syntax Error, ale prečo?
27. 10. 2013   #182848

Nazdar mám problém s jedným kódom. Na riadku "gamma=math.pi/2-math.atan(yA/xA)" mi vypisuje syntax error ale mám podozrenie, že to skôr súvisí s tým "if" tesne pred tým. Môžete mi s tým niekto pomôcť?Kde je tá chyba? Ja viem, že kód asi nebude ideál a ak máte nejaké iné návrhy ako to vyriešiť privítam to. ďakujem za odpoveď a čas čo tomu budete venovať :)

Roman

#-*- coding: utf-8 -*-

import math



############################################################################
#####                   Zadavani vstupu                                #####
############################################################################

r1=0;
r2=110.5;              
r3=212.5;              
beta2d=35;             
beta1dpoz=45;          

beta2r=beta2d*math.pi/180

############################################################################
#####                 Vypocet suradnic stredu rotace                   #####
############################################################################
xA1, xA2= None, None

while xA1 == None and xA2 == None:
    xs2=r3*math.sin(beta2r);     #x-ova sourandnice stredu rotace S2
    ys2=r1-r3*math.cos(beta2r);  #y-ova sourandnice stredu rotace S2

    kruh1=math.pow(xs2,2)+math.pow(ys2,2);                           #1. vyjadrenie kruhu
    kruh2=math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*math.cos(beta2r);    #2. vyjadrenie kruhu

############################################################################
#####            Vypocet suradnic prusecniku kruznic                   #####
############################################################################

#vypocet x-ovej souradnice bodu A - prusecik kruznic
    try:
        xA1=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))+(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
        xA2=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))-(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
    except ValueError:
        r1=r1+0.1
        
xAmat=[xA1,xA2];
        
xA=max(xAmat); #vetsi hodnota xA - Musi byt realne cislo
        
print('xA',xA)

#podmínka pro znaménko yA
p=math.sqrt(2*math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*(math.sin(beta2r)+math.cos(beta2r)));

if r2>p:
    yA=math.sqrt(math.pow(r1,2)-math.pow(xA,2))        #y-onova suradnica bodu A ak r2>p
elif r2<=p:
    yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2))      #y-onova suradnica bodu A ak r2<p

print ('yA',yA)
print ('r1',r1)
############################################################################
#####        Vypocet uhlu pro kruznicovy vysek a delku oblouku         #####
############################################################################

print ('r1',r1)


beta1d=None

while beta1d<beta1dpoz:
    
    print (r1) 
    xs2=r3*math.sin(beta2r);     
    ys2=r1-r3*math.cos(beta2r);  
    kruh1=math.pow(xs2,2)+math.pow(ys2,2);                           
    kruh2=math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*math.cos(beta2r);    
    xA1=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))+(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
    xA2=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))-(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
    xAmat=[xA1,xA2];
    xA=max(xAmat)
    p=math.sqrt(2*math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*(math.sin(beta2r)+math.cos(beta2r)))    
    if r2>p:
        yA=math.sqrt(math.pow(r1,2)-math.pow(xA,2))        
    elif r2 <= p:
        yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2)
    gamma=math.pi/2-math.atan(yA/xA)            
    gammad=gamma*180/math.pi;                    
    L=2*math.pi*r1*gammad/360;                   
    b=abs(abs(xs2)-abs(xA));                
    a=abs(abs(ys2)-abs(yA));                
    gammad1=gammad-90;                      
    etad=math.atan(b/a)*180/math.pi;        
    deltad=180-90-etad;                     
    try:    
            beta1d=deltad-gammad1                  
    except beta1d<=beta1dpoz:
    r1=r1+0.1
    
print('r1',r1)
print('beta1d',beta1d)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý