2017-12-09 10 views
0

私は、毎年CO2の割合を計算する以下のプログラムを持っています。 私は、プログラム全体が次の行に実行した後、「範囲外のリストインデックス」、をエラーが発生します。リストインデックスとしての誤差が範囲外になった

m= co2level[i+1][1] 

はコード:

# Program to calculate percentage of CO2 every year  

co2level = [(2001,320.93),(2003,322.16),(2004,328.07), 
      (2006,323.91),(2008,341.47),(2009,348.22)] 
i = 0 

while i!=len(co2level): 

    m= co2level[i+1][1] # I am getting error here as list index out of range 
    n= co2level[i][1] 
    percentage=((m-n)/n)*100 
    print " Change in percentage of CO2 in year %r is"%co2level[i][0],percentage 

    i+=1 
+0

あなたのI + 1つのインデックスは、より長くお使いリストを作成し、エラーをスローします。あなたが望むものは、あなたがあなたの境界から外れているなら、あなたが望むものは、 'm = co2level [i] [0]とn = co2lvel [i] [1]' – Chris

+0

'' i 'len(co2level)-1: 'あなたは滞在! – user1767754

+0

ありがとうuser1767754このwhileループは私の問題をソートしました。 –

答えて

0

あなたはこのような境界エラーを回避することができ:

co2level = [(2001,320.93),(2003,322.16),(2004,328.07), 
      (2006,323.91),(2008,341.47),(2009,348.22)] 
i = 1 

while i != len(co2level): 
    old = co2level[i-1][1] 
    act = co2level[i][1] 

    percentage=((act-old)/old)*100 
    print (" Change in percentage of CO2 in year %r is " %co2level[i][0],percentage) 

    i+=1 

「デルタ」を取得してその前に検査することができます。あなたは行為を古いものと比較して、縛られていない。

0

Pythonのインデックスは0です。それはn個の要素を持つリストするための手段と、リストの最初の要素はインデックス0にあり、最後の要素は、インデックスでnは - あなたのコードから次snippentを考えてみましょう1

while i!=len(co2level): 
    m= co2level[i+1][1] 

m = co2level[i+1][1]は、インデックス1 (2003,322.16)の要素から反復処理を開始し、最後にインデックス6の項目を取得しようとしていることを意味します。あなたがmnをどのように割り当てたのか、Moroverに間違いがあります。これを修正するには、行うことができます。

i = 0 
while i!=len(co2level): 
    m= co2level[i][0] # I am getting error here as list index out of range 
    n= co2level[i][1] 
    percentage=((m-n)/n)*100 
    print" Change in percentage of CO2 in year %r is"%co2level[i][0],percentage 
    i+=1 

より神託の方法(ループの使用を)まだ

for i in co2level: 
    m = i[0] 
    n = i[1] 
    percentage=((m-n)/n)*100 
    print" Change in percentage of CO2 in year %r is"%co2level[i][0],percentage 

良くなります。

for i in co2level: 
    m, n = i 
    percentage=((m-n)/n)*100 
    print" Change in percentage of CO2 in year %r is"%co2level[i][0],percentage