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

-1 投票
2 回答
10641 浏览
提问于 2025-04-21 10:19

我刚开始学习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)))

撰写回答