Python 计算球体体积和表面积的输出简单误差

Python 计算球体体积和表面积的输出简单误差,python,geometry,volume,Python,Geometry,Volume,我是python新手。我一直得到下面列出的错误。有人能解释一下我的问题吗?谢谢 体积=4.0/3.0*math.pi*(半径*半径*半径) TypeError:无法将序列与'str'类型的非int相乘 import math radius = input("Enter Radius: ") print("Radius: " + str(radius)) volume = 4.0/3.0 * math.pi * (radius*radius*radius) print("Volume: " +

我是python新手。我一直得到下面列出的错误。有人能解释一下我的问题吗?谢谢

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

TypeError:无法将序列与'str'类型的非int相乘

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或float(或任何其他类型),请执行以下操作:

radius = float(radius)

查看Python2.x中的示例代码时,您可能会感到困惑,其中输入为字符串调用eval(),因此您得到了一个float或int或list或对os.system('rm-rf/')的调用或用户键入的任何内容。这是令人困惑和危险的,所以他们在3.0中修复了它,所以现在您只需要字符串,由您决定如何处理它。

您需要将字符串半径转换为浮点或双精度。 试试这个:

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

是的,我下载了最新的Python3.4.1,我看到的示例是2.x.x,所以这不是很有帮助。但是,是的,我所做的是转换--radius=float(radius),我让它工作得很好。感谢您的快速回复@user2981423:如果您要查看大量的2.x代码(这可能很难避免),那么您可能需要浏览,或者添加书签。除了你会很快学会的大问题(
print
作为一个函数,Unicode无处不在),还有一些小问题。(然而,其中一些更改后来被撤销了,例如,
callable
再次存在,字符串文本上的
u
前缀被忽略,而不是错误,等等。)