0

少し問題があります。リスト (ファイル内の行) のリストを繰り返し処理し、行が 6 または 7 で始まる回数を数える必要があります。問題はありませんでしたが、繰り返されるアイテムも削除する必要があります。たとえば、[6,6,7,7,6] がある場合、[6,7,6] からこれを行う必要があります。 ] - カウントするのはスイッチの数です。しかし、どういうわけか、リストのインデックスは常に範囲外です。なんで?ありがとうございました!

def number_of_switches(list):
    counter = []
    for element in li: 
        if int(element[0]) == 6 or int(element[0]) == 7: counter.append(element[0])
        else: pass
    i = 0   
    for i in (0, len(counter)):
    if counter[i] == counter[i+1]: counter.remove(counter[i+1])
    print 'number of switches is', len(counter)-1 #the first number doesn't count as switch, hence '-1'
4

3 に答える 3

0

あなたが書くとき:

for i in (0, len(counter)):

つまり、0 と len(counter) の 2 つの値で、len(counter) は範囲外のインデックスです。私はあなたが意味したと思います:

for i in range(0, len(counter)):
于 2013-06-14T09:02:23.967 に答える
0

あなたはそうすべきでfor i in range(len(counter)):あり、またif counter[i] == counter[i+1]:この範囲でエラーを出します。最終的なケースを処理する必要があります。

これはより良い解決策かもしれません:

def number_of_switches(list):
    counter = []
    prev = li[0]
    for element in range(1, len(li)): 
        if int(li[element][0]) != prev:
            count.append(int(li[element][0]))
    print 'number of switches is', len(counter)-1 #the first number doesn't count as switch, hence '-1'
于 2013-06-14T08:56:17.413 に答える