「画像、画像上の2点の座標、そして色が指定されているとき、その2点を対角頂点とし、各辺はx軸ないしy軸に平行であり、指定された色の長方形を画像に書き加える関数ex5_5を作れ。頂点としては(2,0)と(3,2)を指定している。」という問題です。次が実行例です。
python3
1image = [[0, 0, 0, 0, 0], 2 [0, 0, 0, 0, 0], 3 [0, 0, 0, 0, 0], 4 [0, 0, 0, 0, 0]](return) 5 6ex5_5(image, 0, 2, 2, 3, 0.5)(return) 7 8image(return) 9 10[[0, 0, 0.5, 0.5, 0], 11[0, 0, 0.5, 0.5, 0], 12[0, 0, 0.5, 0.5, 0], 13[0, 0, 0, 0, 0]]
次のようにプログラムを書きました。jupyter notebookを使いました。
python3
1image = [[0, 0, 0, 0, 0], 2 [0, 0, 0, 0, 0], 3 [0, 0, 0, 0, 0], 4 [0, 0, 0, 0, 0]](return) 5 6def ex5_5(image, y1, x1, y2, x2, color): 7 image = [[0.5 if x1 <= i <= x2 else 0 for i in range(0, 5)] for j in range(0, 4) if y1 <= j <= y2] 8 return image(return) 9 10ex5_5(image, 0, 2, 2, 3, 0.5)(return) 11 12[[0, 0, 0.5, 0.5, 0], [0, 0, 0.5, 0.5, 0], [0, 0, 0.5, 0.5, 0]] 13 14 15image(return) 16 17[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 18 19 20ita.plot.image_show(image)(return) 21 22 23
もちろん最終行の結果は真っ黒の四角だけで、グレーの小さな長方形は上書きされません。上記のコードや結果はどこがおかしいのでしょうか。内包表記でリストを書き換えた後になぜ元のリストが出てくるのでしょうか。お教えください。お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/08 05:54
2020/01/08 06:25
2020/01/08 06:56
2020/01/09 00:40