私はより大きなスクリプトからのコードを持っていますが、私の人生では、エラーの原因がわかりません。
次のようになります。
counter = 1
for i in range(len(binCounts)):
thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
OUTFILE.write("\t".join(bins[i][0:3]))
OUTFILE.write("\t")
OUTFILE.write(str(binCounts[i]))
OUTFILE.write("\t")
OUTFILE.write(str(thisRatio))
OUTFILE.write("\n")
binCounts
時系列リストはどこですか[1, 2, 3]
bins は、もう少し情報が含まれている別のリストです。
[['chrY', '28626328', '3064930174', '28718777', '92449', '49911'], ['chrY', '28718777', '3065022623', '28797881', '79104', '49911'], ['chrY', '28797881', '3065101727', '59373566', '30575685', '49912']]
binCounts の変数ごとに、計算されthisRatio
た 、 の最初の 3 行bins
、および の出力を取得しbinCounts
、それらを新しいファイル ( ) にまとめる必要がありますOUTFILE
。
しかし、これは行っていません。それは私にエラーを与えています:
thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
ZeroDivisionError: float division by zero
行を実行すると:
thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
インタラクティブに、それは正常に動作します。
バラバラに分解すると、次のようになります。
A = float(binCounts[i])
print (A)
49999.0
B = (float(counter))
print (B)
1.0
C = float(len(bins))
print (C)
50000.0
thisRatio
2499950000.0
そして、私はインタラクティブに全体を再実行しました(これは以前は行っていませんでした-1thisRatio
行だけです)、このエラーが発生しました...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
IndexError: list index out of range
そのため、.py スクリプトとして実行するとエラーは ZeroDivisionError になり、対話的に実行するとエラーは IndexError になるようです。