繁体   English   中英

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

[英]TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

我只是在试验 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 时,我得到一个无效的语法错误并且打印以红色突出显示。 错误信息说 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
再次感谢您提供的任何见解...

你应该更换:

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'>

你可以看到在执行float(a)之后a的类型仍然str ,但是当你执行 w 赋值a = float(a)时,类型变成了float

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

a=float(a)

这将使a浮动

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM