Pythonで以下のようなコードを書いてみて、一応正しく実行されたのですが
改行やインデント、変数を含む文字列をexecする場合、このような書き方で良いのでしょうか。
それとも、もっと良い書き方がありますでしょうか?

test_str = ''
for i in range(10):
    test_str += 'i = '+str(i) + '\n'
    test_str += 'if i%2==0:'+ '\n'
    test_str += '   if i%3==0:'+ '\n'
    test_str += '      print("'+str(i)+'")'+ '\n'
exec(test_str)

上記のコードは、0から9までの値をforループで回して
2で割り切れる数かつ3で割り切れる数をprintするだけの内容です。
if文にandを使っていないのは、2段階のif文でも問題なく動くか確かめるためです。