私はPythonでマージソートのプログラムをコーディングしようとしてきた:マージソートプログラムでエラーが発生するのはなぜですか?
def merge (list1 , list2) :
result = []
while (len(list1) != 0 or len(list2) != 0) :
if (len(list1) == 1 and len(list2) == 0) :
result.append(list1[0])
del list1[0]
elif (len(list1) == 0 and len(list2) == 1) :
result.append(list2[0])
del list2[0]
else :
if (list1[0]<list2[0]) :
result.append(list1[0])
del list1[0]
elif (list1[0]>list2[0]) :
result.append(list2[0])
del list2[0]
return result
が、私はこのコード
print merge([43, 60], [71, 84])
を実行すると、私はエラーを取得する:
Traceback (most recent call last):
File "mergesort.py", line 99, in <module>
print merge([43, 60], [71, 84])
File "mergesort.py", line 11, in merge
if (list1[0]<list2[0]) :
IndexError: list index out of range
はなぜ私はこれを得る?
というエラーを投げます。リストのインデックスが範囲外であるためです。また、コードが実行中で、なぜエラーが発生しているのかを尋ねることになります。 –
デバッグのための優れたテクニックは、問題の可能性があると思われる状態を与える多数のログをメソッドに追加することです。エラーメッセージに記載されている行の直前など。 –