def drawCircle(h, k, r):
#(x-h)^2 + (y-k)^2 = r^2
for x in range(screen.Width):
y = (math.sqrt(r**2 - (x-h)**2) + k)
if y % 1 == 0:
screen.Set(x, int(y), "X")
drawCircle(0, 0, 5)
screenは、アイテムを2次元配列に配置すると書いた簡単なコンソールレンダラーライブラリです最も左上隅が(0,0)math.sqrt(r ** 2 - (xh)** 2)+ kがValueErrorを返す理由:数学的ドメインエラー
y%1 == 0も同様に0に設定されているようです。違うことをしたいですか? – aschultz
これは本当に円を描く最善の方法ではありません。 sqrtを使って問題を並べ替えるとしても、多くの点を欠場することがわかります。古典的な方法は[Midpoint circle algorithm](https://en.wikipedia.org/wiki/Midpoint_circle_algorithm)ですが、一般的に可能な限りライブラリ呼び出しを使用するのが最善です。 –
[h-r、h + r]の範囲外の 'x '値の場合、円もy値もないので、' ValueError'を取得します。エラーをキャッチして、その 'x'値を無視してください:' except ValueError:continue' – zvone