此代碼太長,無法發佈整個事情,所以希望問題只是包含在這個循環中,但我真的很困惑什麼是這裏錯了。我有這樣的循環:TypeError:不支持的操作數類型爲 - :'instance'和'float'
if index == 1:
mag_diffs = []
counter = 0
while (image_objects[counter].magr_value > -6.0) and (image_objects[counter].magr_value < -4.0) and (counter < 5):
mag_diff = (image_objects[counter].magr_value - new_s_objects[counter].magr)
print 'mag_diff is:'
print mag_diff
mag_diffs.append(mag_diff)
counter +=1
mag_diffs.sort()
mag_offset = np.median(mag_diffs)
,並在後面的代碼當我嘗試在這裏調用它,它運行到一個錯誤:
sextractor_mr.append((new_s_objects[index].magr + mag_offset))
它給出了這樣的錯誤:
Traceback (most recent call last):
File "sextractor_reader.py", line 272, in <module>
sextractor_mr.append((new_s_objects[index].magr + mag_offset))
IndexError: list index out of range
但我還發現while循環條件永遠不會被滿足(它應該是五次),所以當我註釋掉while循環並刪除縮進,以便它只是在while循環中執行一次時,我會得到這個呃ror:
Traceback (most recent call last):
File "sextractor_reader.py", line 252, in <module>
mag_diff = (image_objects[counter].magr_value - new_s_objects[counter].magr)
TypeError: unsupported operand type(s) for -: 'instance' and 'float'
我試着查找錯誤消息,並沒有發現任何類似於我的情況。我對班級不太舒服,所以我認爲這與嘗試與班級合作有關。希望這個錯誤包含在我給你的東西里,但代碼真的太長了才能發佈它(比如1000行)。
編輯:好吧這是我的東西在這裏有什麼問題。我印 image_objects [0] .magr_value if語句上面,它返回
<__main__.SDSS_object instance at 0x10bd4d7a0>
這是不是在所有我想要的東西。我想要一個具有值的浮點數。我以爲那是你怎麼稱呼類。
當代碼*太長而無法發佈整個事物*時,正確的方法不是發佈它的一部分,*希望問題僅包含在此循環中*,但會發布[最小化,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –
第一個錯誤,「索引」超出範圍,超出列表的最高索引或爲負值。請記住,最高索引號比元素數少一個。所以如果你只有一個元素,'index'應該是零。第二個錯誤是因爲你試圖從'magr_value'中減去'magr' - 當你錯過了'_value'時可能是一個錯誤。 – cdarke
好的,我會試試,稍後轉發問題,如果我不明白 – Wilsonwatson