0

この質問には何度も回答が寄せられていることは知っていますが、自分の問題がどこにあるのかわかりません。これは私のコードです:

from random import*

def VerificationLongue():

    x=randint(0,1000)
    liste=CreerListe()
    Check=0
    i=0

    while i<=len(liste):
        if x==liste[i]:
            Check=Check+1
        i=i+1

    print("X est dans la liste",Check," fois")

def CreerListe(): 
    ListeAleatoire=[]
    for i in range (0,100):
        valeur=randint(0,1000)
        ListeAleatoire.append(valeur)
    return (ListeAleatoire)


VerificationLongue()

これは、数値が乱数のリストに含まれているかどうかを調べる単純なアルゴリズムです。「count」や「in」などの機能があることは知っていますが、これは学校用であり、私たちが使用することを望んでいません。だから私が得るエラーがあります:

line 11, in VerificationLongue
    if x==liste[i]:
IndexError: list index out of range

0に初期化されているため、このエラーが発生する理由はわかりません。

4

3 に答える 3

3

持ってi<=len(liste)いますが、リストの最後の要素は indexlen(liste)-1で発生します。つまり、IndexError.

に置き換えることでこれを修正できますi < len(liste)

于 2014-12-12T14:17:32.617 に答える
0

あなたがしなければならないことはprint i、あなたのループの中にいるだけで、なぜそれが起こっているのかを簡単に知ることができます.

あなたのループi < len(liste)<=. リストには 0 からインデックスが付けられるため、100 個のアイテムがある場合は 0 ~ 99 の番号が付けられます。使用<=すると、0 から 100 になり、liste[100]存在しません。

于 2014-12-12T14:21:29.607 に答える
0

ここ:

while i<=len(liste):

iに等しいことができますlen(liste)。そして、そうすべきではありません。使用する必要がありますi<len(liste)

>>> l = range(5)
>>> l
[0, 1, 2, 3, 4]
>>> len(l)
5
>>> l[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> l[4]
4

補足: 理解を使用して while ループを実行できます。

>>> liste = [randrange(10) for _ in xrange(20)]
>>> liste
[4, 4, 0, 7, 6, 6, 2, 9, 8, 1, 4, 7, 2, 4, 1, 4, 7, 4, 0, 2]
>>> x=randint(0,10)
>>> x
4
>>> sum(x == i for i in liste)
6

しかし、リストにもcountメソッドがあります:

>>> liste.count(x)
6
于 2014-12-12T14:17:13.703 に答える