前提・実現したいこと
幅32、⾼さ32で、背景が0クリアされている画像に、中⼼座標(16,16) で半径が6の円を描きなさい。円は1で埋められている。というプログラムを作ろうとしています。
発生している問題・エラーメッセージ
エラーメッセージは出ていませんがうまく出力されません
円の部分をスライスを使って実行しようと思ってますが、数式ははいりませんよね?
こういう場合どうしたらいいのでしょうか?
一応実行結果を下に載せます。
1 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
該当のソースコード
python
1#幅32,⾼さ32で、背景が0クリアされている画像に、中心座標(16,16)で半径が6の円を書きなさい。 2#円は1で埋められている 3 4#リスト(配列)の中の数字 5lin=0 6#横の長さの数字 7x=32 8#縦の長さの数字 9y=32 10#lstはlinをxかけてy繰り返す 11lst = [[lin] * x for _ in range(y)] 12 13#スライスつかう? 14#円の公式 中心座標が(16,16)なのでx0,y0 の部分は16 rは半径6と決まっているので36 15lst[(x - 16) * (x - 16) + (x - 16) * (y - 16) <= 36] = [1] 16 17#lstをそのまま表示させると[0,0,…]と表示されるので 18#[]や,を表示させないようにする処理 19for l in lst: 20 print(''.join(map(str, l)))
試したこと
配列のスライスみたいに,lst[] =[]という型に当てはめてみましたがやはりだめでした。
lst[(x - 16) * (x - 16) + (x - 16) * (y - 16) <= 36] = [1]
補足情報(FW/ツールのバージョンなど)
python3.6.10
回答5件
あなたの回答
tips
プレビュー