Проверку, лежит ли точка внутри окружности
Задана окружность (x-a)2 + (y-b)2 = R2 и точки Р(р1, р2), F(f1, f1), L(l1,l2). Выяснить и вывести на экран, сколько точек лежит внутри окружности. Проверку, лежит ли точка внутри окружности, оформить в виде процедуры.
def task(a,b,r,c):
return len(list(filter(lambda x : (x[0]-a)**2+(x[1]-b)**2 < r**2, c )))
print(task(int(input('Введите точку a: ')),
int(input('Введите точку b: ')),
int(input('Введите радиус: ')),
[[int(i) for i in input('Введите точки р1, р2: ').split()],
[int(i) for i in input('Введите точки f1, f2: ').split()],
[int(i) for i in input('Введите точки l1,l2: ').split()]]))
1)Правильно ли?
2)Как написать проверку, лежит ли точка внутри окружности, в виде процедуры
Ответы (2 шт):
Правильно ли?
Результат - правильный. Попытка пропихать всё в одну строчку - не правильная :)
Как написать проверку в виде процедуры
Процедурой называют программу / функцию, которая последовательно выполняет какие-то инструкции. Иногда это слово используют как синоним для "функции". В контексте задачи, имеется в виду функция, которая получит координаты точки, центра окружности и выдаст True / False.
def int_input(msg = ''):
x = input(msg).strip().split()
return int(x) if len(x) <= 1 else map(int, x)
###
cx, cy, r = int_input('Введите коор-ты центра окружности и радиус (через пробелы): ')
# ↖________________________ (числа сразу сохраняются в виде значений параметров
# ↓ по умолчанию, в момент создания функции)
def includes(px, py, cx = cx, cy = cy, r = r):
return (px - cx) ** 2 + (py - cy) ** 2 < r ** 2
###
included_points = 0
for p in ('P', 'F', 'L'):
px, py = int_input(f'Введите коор-ты точки {p}: ') # Справка: «f-string»
included_points += includes(px, py)
print(included_points)
* cx = cx — названия могут отличаться, они совпали случайно)
** += includes(px, py) в мат-операциях True → 1, False → 0
а если условно перейти в векторную систему . То бишь сравнить условный радиус образованный от точки центра до искомой точки и радиус окружности. Если радиус от точки меньше чем радиус Окружности , то точка лежит внутри окружности.
(Math.pow(getRadius(),2)>= (Math.pow(x,2)+Math.pow(y,2)))
А если мы сравниваем квадраты ,то в принципе логика сохраняется.