TypeError: объект 'int' не вызывается в коде, который решает квадратную формулу - PullRequest
0 голосов
/ 26 апреля 2018

Итак, я хотел создать код, чтобы сделать мою математику немного быстрее.Я создал код, который вводит a, b и c, которые затем помещаются в формулу математики.Это мой первый математический код, поэтому могут возникнуть некоторые очевидные проблемы.Спасибо за помощь!

Код:

import math
num1 = int(input("Enter a:"))
num2 = int(input("Enter b:"))
num3 = int(input("Enter c:"))
result1 = (-num2 + math.sqrt(num2^2 - 4 * (num1)(num3)))
result2 = (result1 / (2 * num1))
print(result2)

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Таким образом, в коде python операторы отличаются от некоторых языков, таких как mathematica.Попробуйте вместо этого.

import math
num1 = int(input("Enter a:"))
num2 = int(input("Enter b:"))
num3 = int(input("Enter c:"))
result1 = (-num2 + math.sqrt(num2**2 - 4 * (num1)*(num3)))
result2 = (result1 / (2 * num1))
print(result2)

оператор питания - ** вместо ^ (то есть оператор XOR).и умножение должно быть явно указано с использованием оператора *, даже если оно заключено в круглые скобки.

0 голосов
/ 26 апреля 2018

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

Похоже, что у вас возникают ValueError: math domain error проблемы, поскольку выпередают "недопустимые" значения вашим a, b, c переменным.Это связано с тем, что python не обрабатывает получение квадратного корня из отрицательных чисел с math.sqrt. Однако , если вы хотите получить и воображаемые решения, я бы порекомендовал вам использовать встроенную поддержку python для обработки комплексных чисел и также использовать cmath.sqrt.Я предлагаю вам рассчитать и сохранить discriminant (то есть материал под знаком квадратного корня) как отдельную переменную.Ваш решающий код может выглядеть следующим образом (обратите внимание, что я также решаю для обоих решений, поскольку в квадратной формуле необходимо учитывать символ ±):

import math
import cmath#complex number math module!!!

def solve_quadratic_equation(a, b, c):
    disc = b**2 - (4*a*c)#disc = discriminant
    sqrt_disc = cmath.sqrt(disc) if disc < 0 else math.sqrt(disc)#ternary if
    pos_answer = (-b + sqrt_disc)/(2*a)
    neg_answer = (-b - sqrt_disc)/(2*a)
    return (pos_answer, neg_answer)

def get_input():
    a = int(input("Enter a: "))
    b = int(input("Enter b: "))
    c = int(input("Enter c: "))
    return (a, b, c)

if __name__ == "__main__":
    a, b, c = get_input()
    answer = solve_quadratic_equation(a, b, c)
    print(answer)
0 голосов
/ 26 апреля 2018

Просто добавив оператор "*" между круглыми скобками num1 и num3, получилось:

import math
num1 = int(input("Enter a:"))
num2 = int(input("Enter b:"))
num3 = int(input("Enter c:"))
result1 = (-num2 + math.sqrt(num2**2 - 4 * (num1)*(num3)))
result2 = (result1 / (2 * num1))
print(result2)

Edit

Если вы хотите разрешить сложные результаты, используйтеsqrt функция cmath.

import cmath
num1 = int(input("Enter a:"))
num2 = int(input("Enter b:"))
num3 = int(input("Enter c:"))
result1 = (-num2 + cmath.sqrt(num2**2 - 4 * (num1)*(num3)))
result2 = (result1 / (2 * num1))
print(result2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...