类型错误: ** 或 pow() 不支持的操作数类型:“str”和“int”

yol*_*o69 3 python string python-2.7

我只是在尝试并享受 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"
Run Code Online (Sandbox Code Playgroud)

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

pax*_*blo 5

你应该更换:

float(a)
Run Code Online (Sandbox Code Playgroud)

和:

a = float(a)
Run Code Online (Sandbox Code Playgroud)

对于其他变量也是如此。

该语句float(a)实际上并没有变成a afloat它只是将其转换,如以下记录所示:

>>> 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'>
Run Code Online (Sandbox Code Playgroud)

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