Недопустимая синтаксическая ошибка python 3.5.2

#python #python-3.x #syntax

#python #python-3.x #синтаксис

Вопрос:

Я получаю синтаксическую ошибку в этой конкретной строке.

 print "Sense %i:" %(i),
  

Полный код:

 for i in range(len(meas)):
    p = sense(p, meas[i])
    r = [format(j,'.3f') for j in p]
    print "Sense %i:" % (i),
    print r,
    entropy(p)
    p = move(p, mov[i])
    r = [format(j,'.3f') for j in p]
    print "Move %i:" % (i),
    print r,
    entropy(p)
    print
  

Комментарии:

1. Какую версию Python вы используете? Если это Python 3, ваш код должен выглядеть так: print("Sense %i:" % (i), end="") .

2. Когда я пытаюсь внести изменения в код, я получаю ошибку в следующей строке

3. В этом случае вам может не хватать закрывающих круглых скобок в строке перед этим.

4. для i в диапазоне (len(meas)): p = смысл (p, meas[i]) r = [формат (j,’.3f’) для j в p] выведите «Смысл %i:»%(i), выведите r, энтропия (p) p =переместить (p, mov[i]) r = [формат (j,’.3f’) для j в p] вывести «Переместить %i:»%(i), распечатать r, энтропия (p) печать

5. Что это за сообщение об ошибке? Опубликуйте полную трассировку стека.

Ответ №1:

Несколько вещей:

  • В Python 3 print это функция, а не оператор, как в Python 2. Итак, вам нужно добавить круглые скобки для вызова функции,
  • % оператор, используемый для форматирования строк, устарел. В Python 3 вы должны использовать format метод (или format функцию),
  • % оператор обычно принимает a tuple в качестве второго параметра: выражение «(i)» является не a tuple , а константой. В Python синглтон tuple имеет завершающую запятую, подобную этой: «(i,)».
  • используйте аргумент ключевого end="" слова для замены новой строки пустой строкой (но я не уверен, что это то, что вы хотите)

Итак, вы можете заменить свой код на:

 print("Sense {}:".format(i), end="")
  

РЕДАКТИРОВАТЬ: добавить код из комментария

Ваш код должен быть преобразован в Python 3, как показано ниже:

 for i in range(len(meas)):
    p = sense(p, meas[i])
    r = [format(j,'.3f') for j in p]
    print("Sense {0}:".format(i), end="")
    print(r, end="")
    entropy(p)
    p = move(p, mov[i])
    r = [format(j,'.3f') for j in p]
    print("Move {0}:".format(i), end="")
    print(r, end="")
    entropy(p)
    print()
  

Комментарии:

1. для i в диапазоне (len(meas)): p = смысл (p, meas[i]) r = [формат (j,’.3f’) для j в p] выведите «Смысл %i:»%(i), выведите r, энтропия (p) p =переместить (p, mov[i]) r = [формат (j,’.3f’) для j в p] вывести «Переместить %i:»%(i), распечатать r, энтропия (p) печать

2. Большое спасибо!!! теперь все работает отлично… На самом деле я просто новичок в программировании на Python. Я хотел бы знать, можете ли вы помочь мне с другими кодами. Еще раз спасибо.

Ответ №2:

Попробуйте это:

 print ("Sense %s:" %i)
  

Будет работать просто отлично

Ответ №3:

В python 3 print — это функция, вы должны использовать скобки: print("Sense %i:" %(i))

Комментарии:

1. print («Смысл %i:»%(i)) print r, энтропия(p) p = переместить(p, mov[i]) r = [формат (j,’.3f’) для j в p] print «Переместить %i:»%(i),выведите r, энтропия (p)