Równanie kwadratowe - Python

0

Wyrzuca mi ciągle błąd, jest jakiś problem z tymi dwoma warunkami if i elif Tyko nie mogę dojść jaki. Dopiero wchodzę w þythona :)

import math
print("Równanie w postaci a*x**2 + b*x + c == 0")
a = int(input("podaj a:"))
b = int(input("Podaj b: "))
c = int(input("Podaj c: "))
delta = (input(b ** 2 - 4 * a * c))
if int(delta) > 0:
    print("Pierwiastki równania kwadratowego: ")
    x1 = (- b - math.sqrt(int(delta))) / 2 * a
    x2 = (- b + math.sqrt(int(delta))) / 2 * a
    print("x1: ",  x1)
    print("x2: ", x2)
elif int(delta) == 0:
    print("Pierwiastki równania kwadratowego: ")
    x0 = - b / 2 * a
    print("x0: ",  x0)
else:
    print("Delta jest ujemna, wiec nie liczymy miejsc zerowych.")
0

czyli jak mam to zrobić? Korzystam z Pycharma. Dopiero jak napisałem wchodzę w to :)

0

Deltę liczysz ze zmiennych. Nie potrzeba tam inputa i trzeba dodać kilka operatorów mnożenia. Nie trzeba wyniku konwertować do int...

1

@adamix13: Programując zwraca się uwagę na szczegóły, kod po uporządkowaniu, działa, ale nie testowany:

print("Równanie w postaci a*x*2 + bx + c == 0")
a = float(input("podaj a:"))
b = float(input("Podaj b: "))
c = float(input("Podaj c: "))
delta = b**2 - 4 * a * c
if delta > 0:
    print("Pierwiastki równania kwadratowego: ")
    x1 = (-b - math.sqrt(delta)) / (2 * a)
    x2 = (-b + math.sqrt(delta)) / (2 * a)
    print("x1: ", x1)
    print("x2: ", x2)
elif delta == 0:
    print("Pierwiastek podwójny równania: ")
    x0 = - b / (2 * a)
    print("x0: ", x0)
else:
    print("Delta jest ujemna, wiec nie liczymy miejsc zerowych.")
0

Dzięki- działa:)

0

Spoko, że działa, ale zauważ, że tu:
delta == 0
Masz buga, porównywanie floatów:
https://stackoverflow.com/questions/5595425/what-is-the-best-way-to-compare-floats-for-almost-equality-in-python

1 użytkowników online, w tym zalogowanych: 0, gości: 1