所以我想创建一些代码,让我的数学作业稍快一些。我创建了输入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)
答案 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)