2015-12-03 3 views
-5

У меня этот код в 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) 
+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, на последней строке, как сказал Джонатон Кледе.

Постарайтесь научиться понимать сообщения об ошибках. Они жизненно важны для отладки вашего кода. Несмотря на то, что на этот раз не было реального сообщения об ошибке, обязательно сделайте это еще раз. SyntaxError сам по себе обычно вызван неприятной ошибкой, подобной этому отступу.

0

Если это код python2, то единственной ошибкой, которую я нахожу, является неопределенная переменная f в последней строке.

Если это код python3, то вы должны изменить print len(s) на print(len(s)), так как print - это функция в python3, а не отдельное ключевое слово оператора.

+0

oh да спасибо за это – smcavoy19

+0

Вы можете выразить свое благодарность, приняв мой ответ. –

0

Спасибо за помощь. Это была ошибка новобранца, забывающая скобки для печати len (s), а также приведение списка f вне функций.

+0

Добро пожаловать. Если вы нашли ответ на свой вопрос, вы можете его принять. Кроме того, не используйте кнопку «Добавить ответ», чтобы добавить новую информацию к вопросу или ответить на ответ, потому что таким образом мы не уведомляемся об изменениях. Вместо этого вы можете прокомментировать, отредактировать ответ и в конечном итоге пометить лучший как принятый, поэтому вопрос закрывается. –