タプルはイミュータブル(変更不可)なシーケンスで、作成後に要素を書き換えることはできません。t[0] = 10のように要素を代入しようとすると、'tuple' object does not support item assignment というメッセージのTypeErrorが発生します。IndexErrorは範囲外の添字を指定したとき、KeyErrorは辞書に存在しないキーを指定したとき、ValueErrorは値が不適切なときに発生する例外なので、この場合は該当しません。
関数のデフォルト引数は、関数が定義された時点で一度だけ評価されます。lst=[]の空リストも定義時に1つだけ作られ、以降の呼び出しで使い回されます。そのため1回目のf(1)で[1]になったリストが残り、2回目のf(2)では同じリストに2が追加されて[1, 2]が返ります。この挙動を避けるには、デフォルト値をNoneにして、関数内でif lst is None: lst = []と新しく作るのが定番の書き方です。
Q9 : 次の式の結果として正しいものはどれですか?nprint(-7 // 2)
//は切り捨て除算(floor division)を行う演算子で、結果は商以下の最大の整数になります。-7 / 2の結果は-3.5で、これを負の無限大方向に切り捨てると-4です。0方向に切り捨てる-3ではない点が、CやJavaなど一部の言語と異なるところです。同様に、剰余演算子%は-7 % 2で1になり、(a // b) * b + (a % b) == a という関係が常に成り立ちます。
Q10 : 次のコードの実行結果として正しいものはどれですか?nprint([x**2 for x in range(5) if x % 2 == 0])
リスト内包表記は、for文とif文を1行にまとめてリストを作る書き方です。range(5)は0から4までの整数を順に返し、if x % 2 == 0で偶数だけを残します。残るのは0、2、4の3つです。それぞれを2乗すると0、4、16になるので、結果は[0, 4, 16]です。0も偶数なので含まれる点に注意してください。[1, 9]は奇数を2乗した場合の結果です。