2

我只是在尝试使用 Python 2.7 并从中获得乐趣,并且我正在尝试编写一个二次方程求解器。当 radicand 为正时,我让它工作,但当它为负时,我得到一个错误。即使在此 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"

当我用 radicand 替换 (b**2)-4*a*c 时,我得到一个无效的语法错误,并且 print 以红色突出显示。错误消息说 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
再次感谢您提供的任何见解...

4

2 回答 2

4

你应该更换:

float(a)

和:

a = float(a)

其他变量也是如此。

该语句float(a)实际上并没有a 变成a float,它只是将它转换为,根据以下记录:

>>> a = raw_input("a? ")
a? 4.5

>>> type(a)
<type 'str'>

>>> float(a)
4.5

>>> type(a)
<type 'str'>

>>> a = float(a)

>>> type(a)
<type 'float'>

您可以看到执行后的类型仍然a是立即,但是当您执行 w 赋值时,类型变为。 strfloat(a)a = float(a)float

于 2013-06-12T01:19:25.443 回答
0

该语句float(a)返回字符串 a 的浮点值。但是,如果您不分配给任何其他变量,则 float(a) 仅适用于该特定行。在下一行中,a 是一个字符串。因此,将浮点值分配给一个变量,比如 a 本身。

a=float(a)

这将使a浮动

于 2013-06-12T01:24:05.750 回答