Добрый день! Изучаю программирование на Python. В качестве тренировки решил написать программу которая решает и выводит решение квадратных уравнений. Код ниже:
print("* Данная программа получает значения A, B и C квадратного уравнения,\n\
вычисляет и выводит результат и решение уравнения.")
value = 1
while value == 1:
quit = input("\nНажмите ENTER чтобы продолжить или Q чтобы выйти: ").lower()
if quit == 'q':
exit
break
else:
# получаем исходные данные и выводим структуру уравнения
a = float(input("\n* Введите значение для Ax\u00B2: "))
b = float(input("* Введите значение для Bx: "))
c = float(input("* Введите значение для C: "))
equals = 0
if a == 0:
print("\nАргумент А не должен быть равен нулю")
else:
square_equalignment = "{:.0f}x\u00B2{:+.0f}x{:+.0f}={:.0f}".format(a, b, c, equals)
print(f"\n* Общий вид квадратного уравнения: {square_equalignment}")
# вычисляем дискриминант
D = (b ** 2) - (4 * a * c)
print("\n* Вычисляем дискриминант по формуле: D = b\u00B2 - 4ac = {:.0f} - 4 * {:.0f} * {:.0f} = {:.0f}".format(b ** 2, a, c, D))
# Проверяем имеет ли уравнение корни или нет
if D < equals:
print("\n* У исходного уравнения корней нет, поскольку квадрат любого числа не должен быть отрицательным.")
elif D > equals:
print("\n* У исходного уравнения два корня, так как дискриминант больше нуля:")
x_1 = ((-b) + (D ** 0.5)) / (2 * a)
x_2 = ((-b) - (D ** 0.5)) / (2 * a)
print("\n* Значение переменной Х 1 равняется: {:.2f}".format(x_1))
print("* Значение переменной Х 2 равняется: {:.2f}".format(x_2))
print("\nУравнение решено")
else:
print("\n* У исходного уравнения один корень, так как дискриминант равен нулю:")
x = - (b / (2 * a))
print("* Значение переменной Х равняется: {:.2f}".format(x))
print("\nУравнение решено")
Если пользователь при запросе "Введите значение для..." вводит пустую строку, то программа закрывается с ошибкой:
Traceback (most recent call last):
File "D:\pyt\discr.py", line 12, in <module>
a = float(input("\n* Введите значение для Ax\u00B2: "))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: could not convert string to float: ''
так как программа ожидает аргумент, но не получает его. Подскажите как реализовать проверку корая сообщит пользователю, что он ввел пустую строку и предложит заново ввести аргументы. Еще одну конструкцию из if else на мой взгляд не нужно делать. Ну и общие рекомендации тоже приветствуются. Заранее спасибо.
P.S. Функции и вообщем то циклы еще не изучал.