理由、というと「そうなるように作られているから」ということになっちゃいます。自然科学ではなくて工学なので。
②、「反復されない」というより、print関数は反復の範囲に入っていなくて、反復が終了してから一度だけ実行されるので、その時の値が1度だけ表示される、と言ったほうが正確かと思います。
③、「エラー」という言葉を正しく使わない人に聞いた説明ではないでしょうか。
プログラムにおいて「エラー」というのは、まずは文法に対して正しくない(解釈できない)記述があることとか、値の型や値の範囲などに問題があってプログラムが実行できないこと、というのが本来の意味です。時々、「実行はできたが意図しない結果になってしまう」こともエラーといわなくもないですが、その場合はエラーという言葉を使わないほうが誤解を生まないでしょう。
そういう話を踏まえて、③は「エラーが出る」ことはありません。ただ、延々と(プログラムが何らかの理由で中段されるまで)1を表示するという、普通では無意味な動作になるためそれを\u0026quot;エラーが出る\u0026quot;と呼んだのだと思います。それは適切な表現ではありません。
なお、メモにある「これを足したりするかいわれてないのにprintしている」というその言葉通りはエラーの原因になりません。値が設定されていない変数を表示しようとするとそれはエラーになりますが、先頭でn=1という値が与えられています。print()関数は、値が変更されているかどうかなんてことは関係なく、値を表示するだけです。