TypeError:**或pow()的不支持的操作数类型:'str'和'int'

时间:2013-06-12 01:16:49

标签: string python-2.7

我只是在试验和玩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'
再次感谢您提供的任何见解......

2 个答案:

答案 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成为浮动