2016-07-28 15 views
-7

私は比較的新しいPythonです。次のコードを実装しようとしたときにこのエラーが発生しました。私はエラーを理解していない。Python:IndexError:リストのインデックスが範囲外です

def coinChange(S,m,n): 

    dp = [[0 for x in range(m)] for x in range(n+1)] 

    for i in range(m): 
     dp[0][i] = 1 

    for i in range(1,n+1): 
     for j in range(m): 
      if i >= S[j]: 
       dp[i][j] = dp[i-1][j] + dp[i][i-S[j]] 
      else: 
       dp[i][j] = dp[i-1][j] 

    return dp[i][j] 


S = [1,3,5] 
m = len(S) 
n = 11 

print(coinChange(S,m,n)) 



This is the error I'm getting: 
    Traceback (most recent call last): 
    File "C:\Users\SaiV\CoinChange.py", line 24, in <module> 
     print(coinChange(S,m,n)) 
    File "C:\Users\SaiV\CoinChange.py", line 13, in coinChange 
    dp[i][j] = dp[i-1][j] + dp[i][i-S[j]] 
    IndexError: list index out of range 
+3

実行するコードは何ですか?与えられた値の期待される出力は?その範囲外のリストを反復しようとしています。 – CristiFati

+0

問題は 'i = 4'と' j = 0'のときに発生します。 'dp [i] [i-S [j]]'は 'dp [4] [3]'に変換され、2番目のインデックスはその区間(0,1,2)の外側にあります。 – CristiFati

答えて

1

エラーは、存在しないmy_list[index]のように)リスト内のインデックスの値を取得しようとしたことを意味します。これは、賢明な言語では致命的なエラーであるとみなされ、プログラムはすぐに終了します。問題のどこが良いかを知るには、残りの例外メッセージを読んでください。

関連する問題