Syntax Error, ale prečo? – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Syntax Error, ale prečo? – Python – Fórum – Programujte.comSyntax Error, ale prečo? – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Roman
~ Anonymní uživatel
113 příspěvků
27. 10. 2013   #1
-
0
-

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)
Nahlásit jako SPAM
IP: 89.102.239.–
Reklama
Reklama
z
~ Anonymní uživatel
268 příspěvků
28. 10. 2013   #2
-
0
-

yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2))

Nahlásit jako SPAM
IP: 88.101.8.–
Roman
~ Anonymní uživatel
113 příspěvků
28. 10. 2013   #3
-
0
-

#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)
Nahlásit jako SPAM
IP: 89.102.239.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

Podobná vlákna

Syntax error — založil Slim

Print syntax error — založil Akimi Keita

 

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