我只是在试验和玩Python 2.7,我正在尝试编写二次方程求解器。当radicand是正面的时候我有它工作,但是当它消极时我得到一个错误。甚至在此之后如果否则声明。它也不适用于大数字。谢谢你的帮助。
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时,我得到一个无效的语法错误,并且打印以红色突出显示。
错误信息说
TypeError:**或pow()的不支持的操作数类型:'str'和'int'
再次感谢您提供的任何见解......
答案 0 :(得分:3)
你应该替换:
float(a)
使用:
a = float(a)
和其他变量类似。
声明float(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
后,您可以立即看到str
的类型仍 float(a)
,但是当您执行w a = float(a)
时,类型变为float
。
答案 1 :(得分:0)
语句float(a)
返回字符串a的浮点值。但是如果你没有分配给任何其他变量,那么float(a)只适用于那个特定的行。在下一行中,a是一个字符串。因此,将浮点值赋给变量,比如说自己。
a=float(a)
这会使a
成为浮动