Ввод координат по диапазону от -n до 0

Есть задание:

Даны действительные числа (хі,уі),і = 1,2 .. n, - координаты точек на плоскости. Определить количество точек, что попадают в заштрихованную область заданого цвета(29 вариант).

И есть рисунок:

введите сюда описание изображения

Я рассчитал формулы для заштрихованой области, и также вывел одну из возможных точек, которая может попадать в область(-9,-2) при радиусе круга 5.

Пытаюсь сделать динамический ввод координа по диапазону (-n;0) но получается какая то каша и ничего не находит.

def circle_v29():
    """Дан радиус и длинна последовательности. Найти количество точек
       входящих в заштрихованую область"""
    try:
        r = int(input("r круга = "))
        n = int(input("Введите отрицательное n, для диапазона (-n;0) = "))
        x = 0
        y = 0
        count = 0
        for i in range(n, 0):
            x += n
            y += n
            if (x+r)**2 + y**2 <= r**2 and y <= -r and x-2*r <= 0:
                count += 1
                n += 1
            elif (x+r)**2 + y**2 <= r**2 and x <= -2*r and x-r <= 0:
                count += 1
                n += 1
            else:
                continue
        print(f"Количество точек,входящих в область: {count}")
    except:
        print("INTEGER expected!")

Подскажите,пожалуйста что я делаю не так?


Ответы (1 шт):

Автор решения: Zhihar

можно вот так:

r = int(input("r круга = "))

count = 0

for x in range(0, r + 1):
    for y in range(0, r + 1):

        # не рассматриваем точки вне круга
        if x * x + y * y > r * r:
            continue

        # не рассматриваем точки внутри треугольника
        if y <= r - x:
            continue

        count += 2

print(count)

поскольку ситуация симметричная, то можно рассмотреть только четверть, а результаты удвоить

→ Ссылка