计算球体的体积和表面积输出简单错误
我刚开始学习Python,遇到了下面这个错误。有人能帮我解释一下我遇到的问题吗?谢谢!
volume = 4.0/3.0 * math.pi * (radius*radius*radius)
错误类型:TypeError:不能用非整数类型的'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)))
2 个回答
0
input
函数会返回一个字符串。你不能把两个字符串相乘。
如果你想把它转换成整数(int)或浮点数(float,带小数的数字)或者其他类型,可以这样做:
radius = float(radius)
你可能会对 Python 2.x 的示例代码感到困惑,因为在那个版本中,input
会自动对字符串使用 eval()
函数,这样你就能得到浮点数、整数、列表,甚至是用户输入的命令(比如 os.system('rm -rf /')
)。这种做法既让人困惑又很危险,所以在 Python 3.0 中进行了修正,现在 input
只返回字符串,接下来你需要自己决定怎么处理这个字符串。
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)))