2

Python 2.7 を実験して楽しんでいるだけで、二次方程式ソルバーを作成しようとしています。ラジカンドが正の場合は機能しましたが、負の場合はエラーが発生します。この if else ステートメントの後でも。また、大きな数では機能しません。助けてくれてありがとう。

import math
a = raw_input("a = ")
b = raw_input("b = ")
c = raw_input("c = ")
float(a)
float(b)
float(c)
radicand = ((b**2)-4*a*c)
if radicand >= 0:
    print(((0-b) + math.sqrt((b**2)-4*a*c))/(2*a))
    print(((0-b) - math.sqrt((b**2)-4*a*c))/(2*a))
else:
    print "Imaginary Radical"

(b**2)-4*a*c を radicand に置き換えると、無効な構文エラーが発生し、印刷が赤で強調表示されます。エラーメッセージには TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int' というメッセージが表示されます
。提供できる洞察に感謝します...

4

2 に答える 2

0

このステートメントfloat(a)は、文字列 a の float 値を返します。ただし、他の変数に代入しない場合、 float(a) はその特定の行に対してのみ保持されます。次の行の a は文字列です。したがって、float 値を変数、たとえば a 自体に割り当てます。

a=float(a)

これaで浮力がつく

于 2013-06-12T01:24:05.750 に答える