语法无效,我不知道为什么

时间:2015-12-03 00:23:47

标签: python

我在Python 3中有这个代码。我是一个初学者,所以链接到好站点也会有所帮助。无论如何,我的目标是在列表中找到两个重复的数字,然后找到它们之间的元素数量。当我运行我的模块时,它会出现无效的语法,没有任何解释。它所说的只是无效语法,没有别的。任何帮助表示赞赏。

def pirate_list(thelist):
    duplicate = set()
    duplicate_add = duplicate.add
    f = []
    for i in thelist:
        if i in duplicate or duplicate_add(i):
            f.append(i)
            print (f)
            f.reverse()
            print(f)
            break
        else:
            f.append(i)
            print ("fail")
pirate_list([6,1,0,2,1,6])
def count_list(f):
    duplicate = set()
    duplicate_add = duplicate.add
    s = []
    for x in f:
        if x in duplicate or duplicate_add(x):
            s.append(x)
            print len(s)
            break
        else:
            s.append(x)
count_list(f)

4 个答案:

答案 0 :(得分:0)

每个def语句下的文本应缩进。

最后一行是指countlist未定义的,f是在不同的函数中定义的。

答案 1 :(得分:0)

def语句将缩进。 countlist应该是count_list,最后一行应该是Jonathon Clede所说的。

练习学习理解错误信息。它们对于调试代码至关重要。即使这次没有真正的错误信息,也一定要这样做。 SyntaxError本身通常是由一个令人讨厌的错误引起的,就像这个缩进一样。

答案 2 :(得分:0)

如果是python2代码,那么我找到的唯一错误是最后一行中未定义的变量f

如果是python3代码,则必须将print len(s)更改为print(len(s)),因为print是python3中的函数而不是单独的语句关键字。

答案 3 :(得分:0)

感谢所有帮助。这是一个新手错误,忘记了打印len的括号,并将f列表放在了函数之外。