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

Корни квадратного уравнения

13.02.2023, 14:50. Показов 1638. Ответов 3

Студворк — интернет-сервис помощи студентам
Напишите функцию find_roots, принимающую три параметра: коэффициенты уравнения и возвращающую его корни в виде кортежа из двух значений.

Так же создайте два собственных исключения NoSolutionsError и InfiniteSolutionsError, которые будут вызваны в случае отсутствия и бесконечного количества решений уравнения соответственно.

Если переданные коэффициенты не являются рациональными числами, вызовите исключение TypeError.

Не проходит неизвестный тест(

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class NoSolutionsError(Exception):
    pass
 
 
class InfiniteSolutionsError(Exception):
    pass
 
 
def find_roots(a, b, c):
    if not all(map(lambda x: isinstance(x, int), (a, b, c))):
        raise TypeError
    if a == 0 and b == 0 and c == 0:
        raise InfiniteSolutionsError
    elif a == 0 and b == 0:
        raise NoSolutionsError
    elif a == 0:
        return (0 - c / b), (0 - c / b)
    elif b == 0 and c == 0:
        return 0, 0
    elif b == 0:
        if (c / a) < 0:
            raise NoSolutionsError
        elif (c / a) > 0:
            roots = sorted([((-c / a) ** 0.5), (-(-c / a) ** 0.5)])
            return roots[0], roots[1]
    elif c == 0:
        roots = sorted([0, (-b / a)])
        return roots[0], roots[1]
    else:
        d = (b ** 2) - (4 * a * c)
        if d < 0:
            raise NoSolutionsError
        elif d == 0:
            return (-b / (2 * a)), (-b / (2 * a))
        elif d > 0:
            roots = sorted([((-b + (d ** 0.5)) / (2 * a)), ((-b - (d ** 0.5)) / (2 * a))])
            return roots[0], roots[1]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2023, 14:50
Ответы с готовыми решениями:

Найти корни квадратного уравнения
Дана строка, содержащая цифры и символы x, *, +, -, = и является правильной записью квадратного уравнения. Найти корни этого уравнения.

Найти корни квадратного уравнения
Найти корни квадратного уравнения a{x}^{2}+bx+c=0, заданного своими коэффициентами a, b и с (a&gt; 0), если известно, что дискриминант...

Найти корни квадратного уравнения
Найти корни квадратного уравнения a{x}^{2}+bx+c=0 заданного своими коэффициентами a, b, c.

3
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
13.02.2023, 16:37
Цитата Сообщение от danilnev Посмотреть сообщение
Если переданные коэффициенты не являются рациональными числами, вызовите исключение TypeError.
Цитата Сообщение от danilnev Посмотреть сообщение
Python
1
2
if not all(map(lambda x: isinstance(x, int), (a, b, c))):
        raise TypeError
...

Добавлено через 4 минуты
И второй вопрос, каким тестом можно различить какое из исключений NoSolutionsError или InfiniteSolutionsError сработало?

Добавлено через 5 минут
Третий вопрос. Вы понимаете разницу, когда уравнение имеет один корень (уравнение линейное) и двумя равными корнями (дискриминант равен нулю)?
1
-5 / 3 / 2
Регистрация: 13.05.2020
Сообщений: 14
13.02.2023, 16:50
Попробуй это:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import math
 
class NoSolutionsError(Exception):
    pass
 
class InfiniteSolutionsError(Exception):
    pass
 
def find_roots(a, b, c):
    if type(a) not in [int, float] or type(b) not in [int, float] or type(c) not in [int, float]:
        raise TypeError("Coefficients must be numbers.")
    
    if a == 0:
        if b == 0:
            if c == 0:
                raise InfiniteSolutionsError("Infinite solutions.")
            else:
                raise NoSolutionsError("No solutions.")
        else:
            return -c/b, -c/b
    else:
        D = b**2 - 4*a*c
        if D < 0:
            raise NoSolutionsError("No solutions.")
        elif D == 0:
            return -b/(2*a), -b/(2*a)
        else:
            x1 = (-b + math.sqrt(D)) / (2*a)
            x2 = (-b - math.sqrt(D)) / (2*a)
            return x1, x2
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
14.02.2023, 07:28
Red white socks, так ведь рациональные это не только целые int..
Я понял, вы про это же ТС намекаете...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2023, 07:28
Помогаю со студенческими работами здесь

Корни квдратного уравнения
Корни квадратного уравнения Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод ...

Корни квдратного уравнения
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...

уточнить корни уравнения
уточнить корни уравнения 4 cos x + 0.3 x = 0 методом половинного деления с точностью 10-4. Составить блок-схему выполнения первого...

Построить алгоритм решения биквадратного уравнения, используя как вспомогательный алгоритм решения квадратного уравнения
Построить алгоритм решения биквадратного уравнения, используя как вспомогательный алгоритм решения квадратного уравнения.

Решение квадратного уравнения с вещественными коэффициентами
Не могу решить на Python Написать функцию, реализующую решение квадратного уравнения с вещественными коэффициентами (только для...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru