Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/266: Рейтинг темы: голосов - 266, средняя оценка - 4.92
-27 / 13 / 0
Регистрация: 29.12.2018
Сообщений: 214

Лежит ли точка на прямой

15.01.2019, 19:50. Показов 53220. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию line(s, t), которая получает на вход две строки: s — уравнение прямой в виде kx+b и t — координаты точки на плоскости в виде x;y. Ваша программа должна печатать True, если точка лежит на прямой, и False в противном случае.

Пример 1
Ввод
line("1x+6", "1;7")
Вывод
True
Пример 2
Ввод
line("5x-10", "5;-9")
Вывод
False
Пример 3
Ввод
line("0x+7", "3;7")
Вывод
True
Пример 4
Ввод
line("3.5x+0", "2;7")
Вывод
True
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2019, 19:50
Ответы с готовыми решениями:

Дана точка М с координатами х и у. Определить лежит ли точка М(х,у) в закрашенной области
Дана точка М с координатами х и у. Определить лежит ли точка М(х,у) в закрашенной области.

Определить лежит ли точка А в области ограниченной параболой прямой
Ввести с клавиатуры координаты точки A (X ,Y) определить лежит ли точка А в области ограниченной параболой Y = 2 - x^2 и прямой y = - 2....

Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области
Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области

21
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.01.2019, 05:40
Python
1
2
3
4
5
6
7
8
s = '1x+6'
x = 1
y = 7
 
k, b = s.split('x')
k, b = int(k), int(b)
y2 = k * x + b
return y2 == y
1
10 / 9 / 3
Регистрация: 17.01.2019
Сообщений: 36
17.01.2019, 19:56
Python
1
2
3
4
5
6
7
8
9
10
def line(s, t):
    if '+' in s:
        equation = float(s[:s.find('x')]) * float(t[:t.find(';')]) + float(s[s.find('+'):])
    else:
        aaa = s[s.find('x'):]
        equation = float(s[:s.find('x')]) * float(t[:t.find(';')]) + float(aaa[aaa.find('-'):])
    if float(t[t.find(';') + 1:]) == equation:
        print(True)
    else:
        print(False)
2
3 / 3 / 0
Регистрация: 13.03.2019
Сообщений: 4
13.03.2019, 23:43
Слишком много необозначенных переменных, зачем постоянно искать их? Вот проще.
Python
1
2
3
4
5
6
def line(s, t):
    x = float(t[:t.index(';')])
    y = float(t[t.index(';') + 1:])
    k = float(s[:s.index('x')])
    b = float(s[s.index('x') + 1:])
    print((k * x + b) == y)
0
 Аватар для Stepaotboga
17 / 14 / 3
Регистрация: 25.12.2022
Сообщений: 27
14.01.2023, 18:26
IlhamN, Вот еще проще
Python
1
2
3
4
5
6
def line(s, t):
    k = float(s.split('x')[0])
    b = float(s.split('x')[1])
    x = float(t.split(';')[0])
    y = float(t.split(';')[1])
    print(y == k * x + b)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.01.2023, 18:34
Stepaotboga, два замечания:

1) дублируется вызов split
Python
1
2
3
lst = s.split('x')
k = float(lst[0])
b = float(lst[0])
2) сравнивать float'ы через == - плохая идея.
Python
1
2
>>> 0.3 == 0.1 + 0.2
False
Добавлено через 24 секунды
Python
1
2
>>> 0.3 == (0.1 + 0.2)
False
1
 Аватар для Stepaotboga
17 / 14 / 3
Регистрация: 25.12.2022
Сообщений: 27
14.01.2023, 19:28
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
0.3 == (0.1 + 0.2)
False
чеее
Эт как вообще
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.01.2023, 19:31
Python
1
2
>>> 0.1 + 0.2
0.30000000000000004
6
0 / 0 / 0
Регистрация: 25.01.2023
Сообщений: 1
25.01.2023, 13:58
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
2) сравнивать float'ы через == - плохая идея.
А как тогда нужно?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.01.2023, 14:01
Взять какую-нибудь погрешность.

Python
1
2
3
4
5
6
>>> e = 0.001
>>> r = 0.1 + 0.2
>>> r
0.30000000000000004
>>> abs(0.3 - r) < e
True
0
0 / 0 / 0
Регистрация: 31.01.2023
Сообщений: 7
31.01.2023, 15:51
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def line(s, t):
    x, y = int(t.split(';')[0]), int(t.split(';')[1])
    a = s.split('x')
    k = float(a[0])
    b = int(a[1])
    f = k * x + b
    if f - y == 0:
        print('True')
    else:
        print('False')
 
 
line("5x-10", "5;-9")
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
31.01.2023, 16:26
Python
1
2
3
4
5
6
7
8
def line(s, a):
    x, y = map(int, a.split(';'))
    return abs(y - eval(s.replace('x', f'*{x}'))) < 0.0001
 
print(line("1x+6", "1;7"))
print(line("5x-10", "5;-9"))
print(line("0x+7", "3;7"))
print(line("3.5x+0", "2;7"))
0
10 / 10 / 0
Регистрация: 05.04.2023
Сообщений: 47
03.04.2024, 21:18
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def line(s, t):
    p = list(map(str, s))
    p1 = list(map(str, t))
    if '.' in p and '.' not in p1:
        k, b = map(float, s.split('x'))
        x, y = map(int, t.split(';'))
    elif '.' in p1 and '.' not in p:
        k, b = map(int, s.split('x'))
        x, y = map(float, t.split(';'))
    elif '.' in p and '.' in p1:
        k, b = map(float, s.split('x'))
        x, y = map(float, t.split(';'))
    else:
        k, b = map(int, s.split('x'))
        x, y = map(int, t.split(';'))
 
    print(y == k * x + b)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
03.04.2024, 22:55
Python
1
2
3
4
5
6
7
8
9
from math import isclose
 
def line(s,t):
    k,_,b = s.partition('x')
    x,_,y = t.partition(';')
    return isclose(float(y), float(k)*float(x)+float(b))
 
ss = input('ss->')
print(eval(ss))
1
 Аватар для palva
4273 / 2967 / 691
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
04.04.2024, 11:20
Если числа, которые могут появиться на входе, выглядят также, как в приведенных топик-стартером примерах, то логичнее не связываться с плавающим типом, а воспользоваться типом decimal
Python
1
2
3
4
5
6
s1 = "3.5x+0"
s2 = "2;7"
from decimal import Decimal
a, b = map(Decimal, s1.split('x'))
x, y = map(Decimal, s2.split(';'))
print(a*x+b == y)
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
04.04.2024, 12:33
palva, тогда такое не прокатит:
Python
1
2
3
4
5
6
7
s1 = "0.3333333333333x+0.3333333333333333"
s2 = "1;0.66666666666666666666666666666"
 
from decimal import Decimal
a, b = map(Decimal, s1.split('x'))
x, y = map(Decimal, s2.split(';'))
print(a*x+b == y)
1
 Аватар для palva
4273 / 2967 / 691
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
04.04.2024, 17:34
idealist, у меня это печатает False
А если написать
Python
1
2
s1 = "0.3333333333333x+0.3333333333333333"
s2 = "1;0.6666666666666333"
то печатает True. Криминала пока не вижу.

Не исключено, что плохой пример подобрать возможно. Но в любом случае лучше пытать препода, чего он добивается от бедного студента, и рассказал ли он ему, что происходит и как это делать.
1
12 / 11 / 3
Регистрация: 04.11.2024
Сообщений: 101
15.01.2025, 14:08
Python
1
2
3
4
5
def line(s, t):
    xx, y = map(float, t.split(';'))
    s = s.split('x')
    s[0] = str(float(s[0]) * xx)
    print('True'if eval("".join(s)) == y else 'False')
Чтобы не было проблемы со сравнением float советую сделать except
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
15.01.2025, 20:49
Цитата Сообщение от getsugatenshoo Посмотреть сообщение
Чтобы не было проблемы со сравнением float советую сделать except
- и что это даст? Сравнивать на равенство данные типа float нужно вот так:


Python
1
print(abs(eval("".join(s))-y)<=1.0e-16)
Ничего лишнего...
1
12 / 11 / 3
Регистрация: 04.11.2024
Сообщений: 101
15.01.2025, 20:57
Catstail, math.isclose не легче? eval места жрёт нехило, не?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2025, 20:57
Помогаю со студенческими работами здесь

Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области
Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области https://i.**********/39ALOgN.jpg&quot;]

Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области
Дана точка M с координатами x и y. Определить лежит ли точка M(x,y) в закрашенной области

Дана точка на плоскости с координатами (х, у). Определить, где лежит точка: внутри, вне или на границе графика
Здравствуйте, помогите мне, пожалуйста, с этой задачей: &quot;Дана точка на плоскости с координатами (х, у). Составить программу, которая...

Записать каноническое уравнение прямой, проходящей через точки и проверить лежит ли точка М0 на этой прямой
Записать каноническое уравнение прямой, проходящей через точки М1(3; 4; –1), М2(2; –1; 1). Проверить, лежит ли точка М0(–2; –9; 3) на...

Лежит ли точка А на прямой y=a+4?
Помогите пжл,завтра нужно модуль сдавать а у меня ничего не готово.Оооочень нужно) Лежит ли точка А на прямой y=a+4?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru