-3

(インポートなしの2次方程式でxの値を検索します。)プログラムを実行するたびに、Pythonは停止しdiscriminant = (b ** 2) - 4(a * c)、TypeError:'int'オブジェクトを呼び出すことができません。どうしたの?

#------SquareRootDefinition---------#
def Square_Root(n, x):
if n > 0:
    y = (x + n/x) / 2
    while x != y:
        x = y
        return Square_Root(n, x)
    else:
        if abs(10 ** -7) > abs(n - x ** 2):
            return y
elif n == 0:
    return 0
else:
    return str(int(-n)) + "i"

#----------Quadratic Equation--------------#

a = input("Enter coefficient a: ")
while a == 0:
    print "a must not be equal to 0."
    a = input("Enter coefficient a: ")
b = input("Enter coefficient b: ")
c = input("Enter coefficient c: ")

def Quadratic(a, b, c):
    discriminant = (b ** 2) - 4(a * c)
    if discriminant < 0:
        print "imaginary"
    elif discriminant >= 0:
        Sqrt_Disc = Square_Root(discriminant)
        First_Root = (-b + Sqrt_Disc) / (2 * a)
        Second_Root = (-b - Sqrt_Disc) / (2 * a)

  return First_Root, Second_Root

X_1, X_2 = Quadratic(a, b, c)
4

3 に答える 3

8

4(a * c)有効なPythonではありません。つまり4 * a * c。並置を使用して、数学表記では乗算記号を省略できますが、Python(または他のほとんどのプログラミング言語)では省略できません。

于 2013-01-04T05:54:26.807 に答える
5

関数として使用しようとし4ています:

discriminant = (b ** 2) - 4(a * c)

あなたが逃した*

discriminant = (b ** 2) - 4 * (a * c)

また、判別式が0未満であることが判明した場合、バインドされていないローカル例外が発生します。

>>> X_1, X_2 = Quadratic(2, 1, 1)
imaginary
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 9, in Quadratic
UnboundLocalError: local variable 'First_Root' referenced before assignment

そこに追加する必要があります。returnさらに良いのは、例外を発生させることです。

def Quadratic(a, b, c):
    discriminant = (b ** 2) - 4(a * c)
    if discriminant < 0:
        raise ValueError("imaginary")
    elif discriminant >= 0:
        Sqrt_Disc = Square_Root(discriminant)
        First_Root = (-b + Sqrt_Disc) / (2 * a)
        Second_Root = (-b - Sqrt_Disc) / (2 * a)

    return First_Root, Second_Root

Square_Root()関数にデフォルト値がありませんx

def Square_Root(n, x=1):

これらの変更により、関数は実際に機能します。

>>> Quadratic(1, 3, -4)
(1, -4)
于 2013-01-04T05:54:36.103 に答える
3

あなたがする必要がある4 * (a * c)4 * a * c、Pythonがあなたが関数を呼び出そうとしていると思っているという理由だけで4

于 2013-01-04T05:54:32.157 に答える