0

リストを使用してこのコードを書き直そうとしています。インデックスを上げると、I > 4 の場合にプログラムがクラッシュします。リストを使用してこのコードを小さくするにはどうすればよいですか? どんな助けでも大歓迎です。

if (I == 0):
  J = -12
elif (I == 1):
  J = 24
elif (I == 2):
  J = -6
elif (I == 3):
  J = 193
elif (I == 4):
  J = 87
else:
  raise IndexError
4

2 に答える 2

9

可能な値のリストを使用するだけですJ

J_values = [-12, 24, -6, 193, 87]
J = J_values[I]

が範囲外の場合、これはIndexError例外を発生Iさせます。したがって、4 より大きい:

>>> J_values = [-12, 24, -6, 193, 87]
>>> J_values[2]
-6
>>> J_values[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

負のインデックスは、リストの最後からカウントされます。-1最後の要素です:

>>> J_values[-1]
87
于 2013-11-04T11:03:42.090 に答える
0

@Martijn Pieters の返信に加えて、値が特定のパターンに従っている場合は、リストを作成するときに range() を使用できます。

>>> J_VALUES = range(15)
>>> J_VALUES
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>>
>>> J_VALUES = range(-5, 15, 2)
>>> J_VALUES
[-5, -3, -1, 1, 3, 5, 7, 9, 11, 13]
于 2013-11-04T11:25:20.720 に答える