質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

5回答

713閲覧

幅32、⾼さ32で、背景が0クリアされている画像に、 中⼼座標(16,16) で半径が6の円を描きなさい。 円は1で埋められている。

K.Saitoh

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

2クリップ

投稿2020/06/01 16:31

前提・実現したいこと

幅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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/06/01 16:44

使用するモジュールとかは問題に書いてないんですか?
K.Saitoh

2020/06/01 16:46

いいえ書いていません。自由に作ってきてと言われました
hoshi-takanori

2020/06/01 18:35

32 * 32 の 2 次元配列 img を作って、2重ループで img[y][x] にそれぞれ 0 か 1 を入れればいいのでは。(配列の内包表記を使うと格好良く書けそうですが…。)
guest

回答5

0

lst[(x - 16) * (x - 16) + (x - 16) * (y - 16) <= 36] = [1]

当方,pythonわかりませんけど,
lst[(x - 16) * (x - 16) + (y - 16) * (y - 16) <= 36] = [1]
であるべきなんじゃないかと.

投稿2020/06/02 01:03

fana

総合スコア11708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K.Saitoh

2020/06/02 01:05

ああそうでしたxじゃなくてyでした。タイプミスですみつけていただきありがとうございます
guest

0

ベストアンサー

Python

1lst[(x - 16) * (x - 16) + (x - 16) * (y - 16) <= 36] = [1] 23from itertools import product 4for x, y in product(range(32), range(32)): 5 if (x - 16) ** 2 + (y - 16) ** 2 <= 36: 6 lst[y][x] = 1 7```なんか他でできそうな気もするけどとりあえず出しときます。 8-----追記----- 9```Python 1000000000000000000000000000000000 1100000000000000000000000000000000 1200000000000000000000000000000000 1300000000000000000000000000000000 1400000000000000000000000000000000 1500000000000000000000000000000000 1600000000000000000000000000000000 1700000000000000000000000000000000 1800000000000000000000000000000000 1900000000000000000000000000000000 2000000000000000001000000000000000 2100000000000001111111000000000000 2200000000000011111111100000000000 2300000000000111111111110000000000 2400000000000111111111110000000000 2500000000000111111111110000000000 2600000000001111111111111000000000 2700000000000111111111110000000000 2800000000000111111111110000000000 2900000000000111111111110000000000 3000000000000011111111100000000000 3100000000000001111111000000000000 3200000000000000001000000000000000 3300000000000000000000000000000000 3400000000000000000000000000000000 3500000000000000000000000000000000 3600000000000000000000000000000000 3700000000000000000000000000000000 3800000000000000000000000000000000 3900000000000000000000000000000000 4000000000000000000000000000000000 4100000000000000000000000000000000 42```こうですね。

投稿2020/06/01 21:07

編集2020/06/02 01:26
ForestSeo

総合スコア2720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K.Saitoh

2020/06/02 01:15 編集

すみません、(**x** - 16) * (y - 16)の部分は(**y** - 16) * (y - 16)でした。自分のタイプミスでした。 (x - 16) * (y - 16)のxの部分をyにしたらできました。 なのでベストアンサーにさせていただきますありがとうございます
K.Saitoh

2020/06/02 01:30

助かりましたありがとうございます
guest

0

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 15#数式としては(x - 16) * (x - 16) + (y - 16) * (y - 16) <= 36] = [1] 16from itertools import product 17for x, y in product(range(32), range(32)): 18 if (x - 16) ** 2 + (y - 16) ** 2 <= 36: 19 lst[y][x] = 1 20 21#lstをそのまま表示させると[0,0,…]と表示されるので 22#[]や,を表示させないようにする処理 23for l in lst: 24 print(''.join(map(str, l)))

投稿2020/06/02 01:27

K.Saitoh

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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 15#数式としては(x - 16) * (x - 16) + (y - 16) * (y - 16) <= 36] = [1] 16from itertools import product 17for x, y in product(range(32), range(32)): 18 if (x - 16) ** 2 + (y - 16) ** 2 <= 36: 19 lst[y][x] = 1 20 21#lstをそのまま表示させると[0,0,…]と表示されるので 22#[]や,を表示させないようにする処理 23for l in lst: 24 print(''.join(map(str, l)))

投稿2020/06/02 01:20

K.Saitoh

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

中心(cx,cy)からの距離と半径rの差delta_rが、thresholdを超えなければ円上にあるということにして1を描くやつです。
threshold増やすと太くなります。
って、これよく考えると質問への回答になってないすね。すみません。

python3

1back_h = 32 2back_w = 32 3r = 6 4cx, cy = 16,16 5threshold = 0.4 6 7def delta_r(x,y,cx,cy,r): 8 return abs(((x-cx)**2+(y-cy)**2)**0.5-r) 9 10l = "" 11for h in range(back_h): 12 for w in range(back_w): 13 if delta_r(w,h,cx,cy,r)<threshold: 14 l += "1" 15 else: 16 l += "0" 17 l+="\n" 18print(l)
00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000111110000000000000 00000000000001000001000000000000 00000000000010000000100000000000 00000000000100000000010000000000 00000000001000000000001000000000 00000000001000000000001000000000 00000000001000000000001000000000 00000000001000000000001000000000 00000000001000000000001000000000 00000000000100000000010000000000 00000000000010000000100000000000 00000000000001000001000000000000 00000000000000111110000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000

投稿2020/06/02 01:02

編集2020/06/02 01:06
jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K.Saitoh

2020/06/02 01:26

jeanbiegoさん 今回の円は中はくり抜いてない円なので、こちらのソースは当てはまりません 回答していただきありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問