计算球体的体积和表面积的输出简单错误
问题描述:
我是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)))
答
input
的非INT序列乘以返回一个字符串。你不能将两个字符串相乘。
如果你想将它转换为整数或浮点数(或任何其他类型),像这样做:
radius = float(radius)
您可能已经通过观察在Python 2.x的示例代码混淆,在那里为你输入的字符串是eval(),所以你得到一个float或者int或者list或者调用os.system('rm -rf /')或者任何用户输入的内容。这是令人困惑和危险的,所以他们把它固定在3.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)))
是的,我下载了最新的3.4.1蟒蛇,我一直在寻找的例子是2.x.x所以这是不是非常有帮助。但是,我所做的是转换---半径=浮点数(半径),我得到它工作正常。感谢您的快速回复! – user2981423 2014-09-12 23:21:15
@ 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