2014-09-12 130 views
-1

我是python的新手。我不断收到下面列出的错误。有人可以解释我遇到的问题吗?感谢计算球体的体积和表面积的输出简单错误

体积= 4.0/3.0 * math.pi *(半径*半径*半径)

类型错误:不能由类型 'STR'

import math 

radius = input("Enter Radius: ") 
print("Radius: " + str(radius)) 

volume = 4.0/3.0 * math.pi * (radius*radius*radius) 
print("Volume: " + str(round(volume,2))) 

surface = 4.0 * math.pi * (radius*radius) 
print("Surface Area: " + str(round(surface,2))) 

回答

0

input的非INT序列乘以返回一个字符串。你不能将两个字符串相乘。

如果你想将它转换为整数或浮点数(或任何其他类型),像这样做:

radius = float(radius) 

您可能已经通过观察在Python 2.x的示例代码混淆,在那里为你输入的字符串是eval(),所以你得到一个float或者int或者list或者调用os.system('rm -rf /')或者任何用户输入的内容。这是令人困惑和危险的,所以他们把它固定在3.0,所以现在你只得到了字符串,这取决于你决定如何处理它。

+0

是的,我下载了最新的3.4.1蟒蛇,我一直在寻找的例子是2.x.x所以这是不是非常有帮助。但是,我所做的是转换---半径=浮点数(半径),我得到它工作正常。感谢您的快速回复! – user2981423 2014-09-12 23:21:15

+0

@ user2981423:如果您打算查看大量的2.x代码(并且很难避免),您可能需要浏览一下,或者可能需要书签[Python 3.0的新增功能](https: //docs.python.org/3/whatsnew/3.0.html)。除了你会很快学到的大问题('打印'作为一个函数,无处不在的Unicode),还有一堆小的。 (然而,这些变化中的一些已经被撤销 - 例如,'callable'再次存在,字符串文字中的'u'前缀被忽略而不是错误等) – abarnert 2014-09-12 23:39:56

0

您需要将字符串半径转换为float或double。 试试这个:

import math 

radius = input("Enter Radius: ") 
print("Radius: " + str(radius)) 

r = float(radius) 

volume = 4.0/3.0 * math.pi * (r*r*r) 
print("Volume: " + str(round(volume,2))) 

surface = 4.0 * math.pi * (r*r) 
print("Surface Area: " + str(round(surface,2)))