Citation: 6B_1216/2017 E. 3

Le recours doit être partiellement admis, le jugement attaqué doit être annulé et la cause doit être renvoyée à la cour cantonale pour qu'elle fixe une peine dans le sens des considérants ci-dessus. Pour le surplus, le recours doit être rejeté dans la mesure où il est recevable. Le recourant qui obtient gain de cause ne supporte pas de frais judiciaires (art. 66 al. 1 LTF) et peut prétendre à une indemnité de dépens à la charge du canton de Neuchâtel (art. 68 al. 1 et 2 LTF), ce qui rend sans objet la demande d'assistance judiciaire. Par ces motifs, le Tribunal fédéral prononce :