Python

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
Здраствуйте, хотелось бы узнать иной код по алгоритиу для дальнейшего изучения. буду признателен в помощи.

Написать программу подсчета корней квадратного уравнения без предварительных проверок.

1. Пользователь должен вводить коэффициенты a, b и c с клавиатуры.
2. Программа должна обрабатывать ошибки деления на 0, корня отрицательного числа и другие, а также выводить соответствующие сообщения при возникновении таких ошибок.
3. Если уравнение не имеет корней, программа должна создать ошибку с помощью ключевого слова raise, а затем обрабатывать ее.
4. Правильно написанная программа при возникновении различных ошибок должна выводить текст ошибки, а также разные сообщения о том, в чем суть этих ошибок. Необработанных ошибок быть не должно.

Моя программа:
Python:
import math

print("Програма підрахунку коренів квадратного рівняння без попередніх перевірок\nКвадратне рівння алгебраїчного виду: ax²+bx+c=...")
print("-"*73)

def finish():
    answer = input("\n""Щоб спробувати ще раз напишіть 1. Щоб вийти напишіть будь-яке інше значення: ")
    if answer == "1":
        print()
        work()
    else:
        print("-"*73)
        print("Роботу завершено")

def work():
    while 1:
        try:
            a = float(input('Введіть число замість змінної "a": '))
            b = float(input('Введіть число замість змінної "b": '))
            c = float(input('Введіть число замість змінної "c": '))
        except ValueError:
            print("Помилка! Значення не є числом")
            continue
   
        try:
            D = b**2 - 4*a*c
            if D < 0:
                raise ValueError
            sqrt_D = math.sqrt(D)
        except ValueError:
            print("Помилка! Рівняння не має розв'язків (D<0)")
            continue

        try:
            x1 = (-b + sqrt_D)/(2*a)
            x2 = (-b - sqrt_D)/(2*a)
            if x1 == x2:
                print("\nx1 = x2 = {}".format(x1))
            else:
                print("\nx1 = {}\nx2 = {}".format(x1, x2))
        except ZeroDivisionError:
            if b != 0:
                x = -c/b
                print("\nx = {}".format(x))
            else:
                print("Помилка! Ділення на 0 (a=0)")
        finally:
            break
    finish()
work()
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
вставьте код как код, соблюдая отступы, подробнее тут как задать вопрос

иной алгоритм решение
решения чего? квадратного уравнения? ну есть еще теорема Виета...

ну в целом код нормальный...
 

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
вставьте код как код, соблюдая отступы, подробнее тут как задать вопрос


решения чего? квадратного уравнения? ну есть еще теорема Виета...

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

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
ну хотелось узнать бы как другие люди могли бы решить данную задачу используя другой код, если не сложно. для дальнейшего изучения
ваш код нормальный, если даже его переписать, это не даст вам сильно новых знаний...
идите дальше, учите ооп, модули, пытайтесь решить реальные задачи, это поможет в изучении...
 

Ver.03

Новичок
Пользователь
Окт 13, 2021
7
1
3
........
2. Программа должна обрабатывать ошибки деления на 0, корня отрицательного числа и другие, а также выводить соответствующие сообщения при возникновении таких ошибок.
.........
4. Правильно написанная программа при возникновении различных ошибок должна выводить текст ошибки, а также разные сообщения о том, в чем суть этих ошибок. Необработанных ошибок быть не должно.

В качестве придирки - возможно, решать (в коде) надо приведённое квадратное уравнение.
Тогда ясно будет, что необходима проверка на ноль старшего коэффициента 'a'.

Решение используя модуль Numpy:

Python:
import numpy as np

a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

root=np.roots([a,b,c])

x1=root[0]
x2=root[1]
print("x1 = ",x1)
print("x2 = ",x2)
 

Форум IT Специалистов