2015-12-03 31 views
-5

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

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) 
+2

你如何发布实际的完整错误信息? “没有解释” – CoryKramer

+0

?它应该有一个错误消息。 –

+0

如果这是您的确切代码,它缺少几行上的缩进,从第2行开始。 – TigerhawkT3

回答

0

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

最后一行是指未定义的countlist,以及在不同函数内定义的f

+0

如何在函数中定义f? – smcavoy19

+0

@ smcavoy19 - 这是基本的东西。我强烈推荐[官方Python教程](https://docs.python.org/3.4/tutorial/index.html)。 – TigerhawkT3

+0

我错了,我没有注意到'f'是'count_list()'函数的参数。代码的最后一行是做什么的,是打算在'count_list()'函数的内部还是外部? –

0

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

让学习理解错误信息成为一种习惯。它们对调试代码至关重要。尽管这次没有真正的错误信息,但一定要在其他时间进行。本身通常是由像这种缩进一样的令人讨厌的错误引起的。

0

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

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

+0

哦,是的,谢谢你 – smcavoy19

+0

你可以通过接受我的答案来表达你的谢意。 –

0

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

+0

非常欢迎。如果你找到了你的问题的答案,你可以接受它。此外,不要使用“添加答案”按钮来向问题添加新信息,或者回复答案,因为这样我们不会收到有关更改的通知。相反,你可以评论,编辑答案,并最终将最好的答案标记为已接受,这样问题就会被封闭。 –

相关问题