4
list=['a','a','x','c','e','e','f','f','f']

i=0
count = 0

while count < len(list)-2:
    if list[i] == list[i+1]:
        if list [i+1] != list [i+2]:
            print list[i]
            i+=1
            count +=1
        else:print "no"
    else:   
        i +=1
        count += 1

私は得ています:

    else:print "no"
   ^
 IndentationError: unexpected indent

次の要素に一致するエルトのみを出力しようとしていますが、それに続く要素は出力しません。私はPythonが初めてで、なぜこれが機能しないのかわかりません。

4

2 に答える 2

7

修正されたコードは次のとおりです ( count += 1else 節の後に a を追加して、確実に終了させます)。

list=['a','a','x','c','e','e','f','f','f']

i=0
count = 0

while count < len(list)-2:
    if list[i] == list[i+1]:
        if list [i+1] != list [i+2]:
            print list[i]
            i+=1
            count +=1
        else:
            print "no"
            count += 1
    else:   
        i +=1
        count += 1

itertoolsを使用したより高度なソリューションは、よりコンパクトで、正しく行うのが簡単です。

from itertools import groupby

data = ['a','a','x','c','e','e','f','f','f']
for k, g in groupby(data):
    if len(list(g)) > 1:
        print k
于 2013-05-19T03:51:51.497 に答える
2

コードはエラーなしで機能します (ただし、ループに陥ります)。タブとスペースが混在していないことを確認してください。

于 2013-05-19T03:50:38.977 に答える