Как красиво вывести квадратное уравнение в консоль? Написал простой код для решения квадратных уравнений. Под конец решил в качестве последнего штриха написать перед началом решения вывод итогового уравнения на экран, спустя несколько минут понял, что не понимаю, как это реализовать. Во-первых квадратное уравнение может быть таким 2x^2+5x-4 или таким -2.1x^2-4.5x+8.3 (числа перед x могут быть как отрицательными так и положительными, а также дробными или целыми). Итак, кратко вопрос такой: как сделать вывод гибким и красивым? Не хочется видеть, при вводе только целочисленных значений что-то вроде 2.0x^2+5.0x-4.0 = 0 и прочее. Код под спойлером. Кодimport math while True: a = float(input('Введите a: ')) b = float(input('Введите b: ')) c = float(input('Введите c: ')) d = b ** 2 - 4 * a * c print("\nВычисляем дискриминант...") print("Дискриминант равняется", d) if d == 0: print("\nДискриминант равен 0") print("x =", -b/(2*a)) elif d < 0: print("\nДискриминант меньше 0, решений нет") else: x1 = (-b - math.sqrt(d)) / (2*a) x2 = (-b + math.sqrt(d)) / (2*a) print("\nВычисляем корни...") print("\nПервый корень равен", x1) print("Второй корень равен", x2) while True: print("\nХотите решить ещё одно уравнение?") answer = input('Y/n(help - справка по командам) ') if answer == 'Y': break elif answer == 'n': exit() elif answer == 'help': print(open('help.txt', 'r').read()) else: print("\nВведите Y или n (help - справка по командам)")
Вы можете создать функцию, которая будет форматировать вывод уравнения в зависимости от коэффициентов и упрощать его, чтобы он выглядел красиво. Вот как это можно сделать в вашем случае:
def format_equation(a, b, c): def format_float(num): if num == int(num): return int(num) return num equation_str = "" if a != 0: if a == 1: equation_str += "x^2" elif a == -1: equation_str += "-x^2" else: equation_str += f"{format_float(a)}x^2" if b != 0: if b == 1: equation_str += " + x" if equation_str else "x" elif b == -1: equation_str += " - x" if equation_str else "-x" elif b > 0: equation_str += f" + {format_float(b)}x" else: equation_str += f" - {format_float(-b)}x" if c != 0: if c > 0: equation_str += f" + {format_float(c)}" elif c < 0: equation_str += f" - {format_float(-c)}" return equation_str + " = 0" a, b, c = 2, 5, -4 equation = format_equation(a, b, c) print(equation) # Вывод: 2x^2 + 5x - 4 = 0
Вы можете использовать эту функцию в своем коде, чтобы вывести красивое уравнение перед его решением.
Вы можете создать функцию, которая будет форматировать вывод уравнения в зависимости от коэффициентов и упрощать его, чтобы он выглядел красиво. Вот как это можно сделать в вашем случае:
def format_equation(a, b, c):def format_float(num):
if num == int(num):
return int(num)
return num
equation_str = ""
if a != 0:
if a == 1:
equation_str += "x^2"
elif a == -1:
equation_str += "-x^2"
else:
equation_str += f"{format_float(a)}x^2"
if b != 0:
if b == 1:
equation_str += " + x" if equation_str else "x"
elif b == -1:
equation_str += " - x" if equation_str else "-x"
elif b > 0:
equation_str += f" + {format_float(b)}x"
else:
equation_str += f" - {format_float(-b)}x"
if c != 0:
if c > 0:
equation_str += f" + {format_float(c)}"
elif c < 0:
equation_str += f" - {format_float(-c)}"
return equation_str + " = 0"
a, b, c = 2, 5, -4
equation = format_equation(a, b, c)
print(equation) # Вывод: 2x^2 + 5x - 4 = 0
Вы можете использовать эту функцию в своем коде, чтобы вывести красивое уравнение перед его решением.