我在Windows系統中使用Ipython Notebook。Python版本是2.7。Python-爲什麼'VauleError'行在循環中不會中斷?
df是pandas DataFrame,只包含超出該範圍的4個值。據我所知,'VauleError除外'將只執行4次。 但爲什麼下面的代碼會繼續執行'except ValueError'行和'print amp_p,amp_n'無休止地執行?我不知道爲什麼,但最後我在'print amp_p,amp_n'之後加上'break',然後它就起作用了。據我所知,'除了ValueError'應該能夠打破while循環。
import numpy as np
from scipy import interpolate
import PitchBearing_wohler as pw
load = np.linspace(-8000,8000,num=10,endpoint=True)
result=pd.read_csv('result.csv',header=None)
result[0]
SCF=3.
D=0.
srf=1
f=interpolate.interp1d(load,result[0])
for col in df.columns:
for ind in df.index:
cycle=df[col][ind]
if cycle==0.:
pass
else:
amp_p=float(col)/2.+float(ind)
amp_n=float(ind)-float(col)/2.
while True:
try:
range_new=f(amp_p)-f(amp_n)
mean_new=(f(amp_p)+f(amp_n))/2
break
except ValueError:
print amp_p,amp_n,cycle
#break # Added after I found the while loop won't break
感謝您的解釋。我想我現在知道,因爲沒有在異常塊中斷,while循環將停留在創建valueerror的同一個值,因爲while循環不會在DataFrame中的值上移動,然後,程序可以從while循環跳轉到For循環並移到下一個值。我只是按照我搜索的一些教程,並不完全理解並犯這樣的錯誤。謝謝。 –
@shengfeiwu是的,沒錯。 :) 你懂了! – Ian