[1, 2, 3, 4] と与えられたとき、

最初の要素が 1 -> 次の1個の要素をタプルにせよという命令

-> 2 なので (2,) を表示

次の要素が 3 -> 次の3個の要素をタプルにせよという命令

-> 4 しかない(3個ない)ので中断

という挙動をしろというパズルなのですが,意図した

(2,)

という出力ではなく

(2,)
(4,)

という出力になってしまいます。

(it.next() for n in xrange(it.next()))

というジェネレータで例外が出るのだから、キャッチされるまでスタックを
さかのぼるはずが、まるで tuple() の中で StopIteration 例外が
キャッチされているかのような実行結果が妙だと思いまして。