我是python的新手,我正在尝试编写一个解决二次方程的程序。
问题是我无法将整数添加到无类型变量中,因为我决定将无类型变量更改为整数,但是我做不到。我尝试了很多次,但都没有成功。
这是代码:
# MY FIRST PROJECT
import math
a = 1
b = -4
c = 1
D = b**2-4*a*c
print(D)
Z=print("the square root of D is: %f" % math.sqrt(D))
print(type(Z))
if D < 0:
print("the problem can't be solved in R because D is negative")
if D == 0 :
x = print(-b/2*a)
if D > 0:
print("the problem has two solutions")
y = print((-b+Z)/2*a)
k = print((-b-Z)/2*a)
我不断得到的错误是:
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
答案 0 :(得分:2)
您的问题是由以下原因引起的:
Z=print("the square root of D is: %f" % math.sqrt(D))
print
is a function总是返回None
(就像没有任何有意义值返回的所有函数一样;从用户定义的函数中省略或绕过return
隐式返回None
如下:那么Z
始终是None
。如果目标是将D
的平方根分配给Z
,则将其替换为:
Z = math.sqrt(D)
print("the square root of D is: %f" % Z)
尽管如此,该代码应在块处理if D < 0:
后的 之后移动,因为如果提供负输入,math.sqrt
将引发ValueError
。>