2012-05-29 179 views
-4

任何人都可以在這個Python 3.2代碼中找到語法錯​​誤?python 3.2語法錯誤:無效語法

import math 
import numpy 

vinf = 10 
vfr = 4 
x = numpy.linspace(-10,10,50) 
y = numpy.linspace(-10,10,50) 
a = numpy.zeros(shape=(len(x),len(y))) 
b = numpy.zeros(shape=(len(x),len(y))) 
u = numpy.zeros(shape=(len(x),len(y))) 
v = numpy.zeros(shape=(len(x),len(y))) 
p = numpy.zeros(shape=(len(x),len(y))) 
s = numpy.zeros(shape=(len(x),len(y))) 


for i in range (0,len(x)): 
    for j in range (0,len(y)): 
     a[i][j]=x[i] 
     b[i][j]=y[j] 


for i in range (0,len(x)): 
    for j in range (0,len(y)): 

     v[i][j] = (vfr/(2*math.pi))*math.pow((b[i][j]+.0047)/(a[i][j]+.05)+(b[i][j]+.0517)/(a[i][j]+.2084)+(b[i][j]-.0271)/(a[i][j]+.2084)+(b[i][j]+.0583)/(a[i][j]+.525)+(b[i][j]-.0228)/(a[i][j]+.525)+(b[i][j]+.0242)/(a[i][j]+.8417)+(b[i][j]-.0087)/(a[i][j]+.8417),-2)*((b[i][j]+.0047)/(math.pow(a[i][j]+.05,2)*(1+math.pow((b[i][j]+.0047)/(a[i][j]+.05),2)))+(b[i][j]+.0517)/(math.pow(a[i][j]+.2084,2)*(1+math.pow((b[i][j]+.0517)/(a[i][j]+.2084),2)))+(b[i][j]-.0271)/(math.pow(a[i][j]+.2084,2)*(1+math.pow((b[i][j]-.0271)/(a[i][j]+.2084),2)))+(b[i][j]+.0583)/(math.pow(a[i][j]+.525,2)*(1+math.pow((b[i][j]+.0583)/(a[i][j]+.525),2)))+(b[i][j]-.0228)/(math.pow(a[i][j]+.525,2)*(1+math.pow((b[i][j]-.0228)/(a[i][j]+.525),2)))+(b[i][j]+.0242)/(math.pow(a[i][j]+.8417,2)*(1+math.pow((b[i][j]+.0242)/(a[i][j]+.8417),2)))+(b[i][j]-.0087)/(math.pow(a[i][j]+.8417,2)*(1+math.pow((b[i][j]+.0087)/(a[i][j]+.8417),2)))) 
     u[i][j] = vinf+(vfr/(2*math.pi))*math.pow((b[i][j]+.0047)/(a[i][j]+.05)+(b[i][j]+.0517)/(a[i][j]+.2084)+(b[i][j]-.0271)/(a[i][j]+.2084)+(b[i][j]+.0583)/(a[i][j]+.525)+(b[i][j]-.0228)/(a[i][j]+.525)+(b[i][j]+.0242)/(a[i][j]+.8417)+(b[i][j]-.0087)/(a[i][j]+.8417),-2)*(1/((a[i][j]+.05)*(1+math.pow((b[i][j]+.0047)/(a[i][j]+.05),2)))+1/((a[i][j]+.2084)*(1+math.pow((b[i][j]+.0517)/(a[i][j]+.2084),2)))+1/((a[i][j]+.2084)*(1+math.pow((b[i][j]-.0271)/(a[i][j]+.2084),2)))+1/((a[i][j]+.525)*(1+math.pow((b[i][j]+.0583)/(a[i][j]+.525),2)))+1/((a[i][j]+.525)*(1+math.pow((b[i][j]-.0228)/(a[i][j]+.525),2)))+1/(a[i][j]+.8417)*(1+math.pow((b[i][j]+.0242)/(a[i][j]+.8417),2)))+1/((a[i][j]+.8417)*(1+math.pow((b[i][j]+.0087)/(a[i][j]+.8417),2)))) 
     p[i][j] = 1-math.pow(math.sqrt(math.pow(u[i][j],2)+math.pow(v[i][j],2)),2) 

file = open("data.dat","w") 
file.write('title = "Driven Cavity"\r\n') 
file.write('variables = "x", "y", "u", "v", "p"\r\n') 
file.write('ZONE T="All"\r\n') 
file.write(' I={}'.format(len(x))) 
file.write(' J={}'.format(len(x))) 
file.write(' K=1') 
file.write(' ZONETYPE=Ordered\r\n') 
file.write(' DATAPACKING=POINT\r\n') 

for i in range (0,len(x)): 
    for j in range (0,len(y)): 
     file.write('{}\t'.format(a[i][j])) 
     file.write('{}\t'.format(b[i][j])) 
     file.write('{}\t'.format(u[i][j])) 
     file.write('{}\t'.format(v[i][j])) 
     file.write('{}\t\n'.format(p[i][j])) 

file.close() 

錯誤說,這是在U [i] [j] =行 結束它可能是一個括號或東西,我只是不能看到它。 我從昨晚5點開始一直在努力,現在是第二天下午3:40。

+1

這將是有益的,如果你能提供追蹤/錯誤消息,並且還確定你在你的源註釋提線清單。 – Levon

+2

它可能也有助於使用突出顯示匹配圓括號的文本編輯器。 – fferen

+1

更有幫助的將是PEP 8(http://www.python.org/dev/peps/pep-0008/),該行有** 734 **個字符 – Levon

回答

1

將行分成幾個較小的操作,以便將錯誤隔離。嘗試從u[i][j] = 0開始,並連續添加完整行的小部分,直到發生錯誤,然後您就會知道在哪裏查找它。

+4

這真的應該是一個評論 – Levon

1

將它粘貼到vim中,並突出顯示最後一個字符,至少有一個額外的關閉字母。但是,我建議將其分解爲多行,以便可以手動進行調試。出於可讀性的原因,長線不是任何語言的好主意。

2

額外)在一行的末尾,這個替換該行:

u[i][j] = vinf+(vfr/(2*math.pi))*math.pow((b[i][j]+.0047)/(a[i][j]+.05)+(b[i][j]+.0517)/(a[i][j]+.2084)+(b[i][j]-.0271)/(a[i][j]+.2084)+(b[i][j]+.0583)/(a[i][j]+.525)+(b[i][j]-.0228)/(a[i][j]+.525)+(b[i][j]+.0242)/(a[i][j]+.8417)+(b[i][j]-.0087)/(a[i][j]+.8417),-2)*(1/((a[i][j]+.05)*(1+math.pow((b[i][j]+.0047)/(a[i][j]+.05),2)))+1/((a[i][j]+.2084)*(1+math.pow((b[i][j]+.0517)/(a[i][j]+.2084),2)))+1/((a[i][j]+.2084)*(1+math.pow((b[i][j]-.0271)/(a[i][j]+.2084),2)))+1/((a[i][j]+.525)*(1+math.pow((b[i][j]+.0583)/(a[i][j]+.525),2)))+1/((a[i][j]+.525)*(1+math.pow((b[i][j]-.0228)/(a[i][j]+.525),2)))+1/(a[i][j]+.8417)*(1+math.pow((b[i][j]+.0242)/(a[i][j]+.8417),2)))+1/((a[i][j]+.8417)*(1+math.pow((b[i][j]+.0087)/(a[i][j]+.8417),2)))