リスト(ユーザーが入力した範囲)を反復しようとしていますが、最初にすべての数値が素数(P)であると仮定し、プログラムをリストに反復させます。リスト内の要素がPならば、範囲内のすべての倍数を反復してNに変更する必要があります。要素がNの場合は、プログラムを次の数に移動します(0と1を設定してプライミングしないようにします、例外として)。インデックス作成の問題が発生していますが、エラーが表示されます。反復でリストの要素を変更する(Python)
list1[number1] = 'N'
IndexError: list assignment index out of range
私はプログラムを実行するときにエラーが発生します。コードは次のとおりです。
# input
n = int(input("Enter a positive integer greater than or equal to 10: "))
while n < 10:
print ("Invalid! Try again")
int(input("Enter a positive integer greater than or equal to 10: "))
# create list
new_n = n + 1
list1 = ['P'] * new_n
# set non prime
list1[0] = 'N'
list1[1] = 'N'
# set up loop
counter = 0
for x in list1:
counter1 = 2
if list1[counter] == 'P':
for y in list1:
number1 = counter * counter1
list1[number1] = 'N'
counter1 += 1
counter += 1
else:
counter += 1
助けてください。ありがとう。
ヒント: '列挙()'ではなく、生の索引ループを使用します。要素とそれに対応する索引の両方に同時にアクセスできます。 –
@AkshatMahajanありがとう!私は今それをやっている。しかし、リストを列挙した場合、そのリスト内の要素に対応する数字だけをどのようにインデックスできますか?たとえば、(2、P)のような列挙型リストでは、intとして2をどのようにインデックスするのでしょうか? –
あなたは 'for index、item in enumerate(list1)'を実行して 'item'の対応するインデックスにアクセスしたいとします。 –