将类型从无类型更改为整数

时间:2019-12-16 17:05:54

标签: python python-3.x types nonetype

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

1 个答案:

答案 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