TypeError:'int'对象在解码二次公式

时间:2018-04-25 21:09:29

标签: python math int

所以我想创建一些代码,让我的数学作业稍快一些。我创建了输入a,b和c的代码,然后将其放入mathematicla公式中。这是我的第一个数学代码,因此可能存在一些明显的问题。谢谢你的帮助!

代码:

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 :(得分:1)

只需添加运算符" *"在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)

修改

如果您想允许复杂的结果,请使用cmath的sqrt函数。

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)

答案 1 :(得分:0)

所以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运算符)。并且需要使用*运算符明确说明乘法,即使它在括号之间。

答案 2 :(得分:0)

看起来你正在尝试制作二次方程求解器。虽然看起来这个问题已经有了一个公认的答案,但我想补充一些我自己的代码来解决一些可能的陷阱。

由于您将“无效”值传递给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)