Pythonでボーリングのスコア計算アルゴリズムの実装をしたいです。
ストライクかスペアの場合は、
・ストライクの場合は現在の位置から2球分の合計数を足す
・スペアの場合は現在の位置から1球分の合計数を足す
という普通のボーリングの計算方法で計算をします。ピンは全部で10本で、10フレームを計算します。

# coding: utf-8

score_lines = [2, 5, 0, 1, 8, 2, 6, 2, 10, 2, 7, 0, 10, 10, 10, 9, 1, 3]

delete_array =[]
ans_sum =[]

#スペア
for i in range(len(score_lines)):
 if i % 2 ==0:
  if (score_lines[i] + score_lines[i+1]) == pin_num:
     ans_sum.append(score_lines[i] + score_lines[i+1] + score_lines[i+2])
     del score_lines[i]
     print(score_lines)
     del score_lines[i+1]
     print(score_lines)

#ストライク
for i in range(len(score_lines)):
 if i % 2 == 0:
  if score_lines[i] == pin_num:
     ans_sum.append(score_lines[i] + score_lines[i+1] + score_lines[i+2])
     del score_lines[i]
     print(1111111111)
     print(score_lines)
     print(33333333333)

#スペア・ストライク以外
for i in range(10):
    ans_sum.append(score_lines[i])

今、「スペア」「ストライク」「スペアとストライク以外」でスコアを計算しています。score_linesが一投ごとに倒れたピンの数です。スペアとストライクで計算したscore_linesの要素(例えば8, 2 や10)などをdelメソッドを使い配列から削除し、スペアとストライク以外の計算の時score_linesの要素の合計を求めスペア・ストライクを計算させようと思っていました。しかし、

#スペア
for i in range(len(score_lines)):

len(score_lines)でdelメソッドを使ったため、IndexError: list index out of range
とエラーが出ました。そのエラーがなぜおこったのかはわかるのですが、なら、どのようにスペア・ストライク・スペアとストライク以外のボーリングスコアの合計を求められるのか、わかりません。
どのように直せばボーリングのスコア計算のアルゴリズムを実装できますか?