编写一个python程序,用于计算半径为r的球体的体积和表面积,圆柱体具有半径为r和高度为h的圆形底部,以及一个带有半径为r和高度为h的圆形底部的圆锥体。将它们放入几何模块中。然后编写一个程序,提示用户输入r和h的值,调用六个函数,然后打印结果。
这是我的代码
from math import sqrt
from math import pi
# FUNCTIONS
def sphere_volume(radius):
return 4/3 * pi * (radius ** 3)
def sphere_surface(radius):
return 4 * pi * radius ** 2
def cylinder_volume(radius, height):
return pi * radius ** 2
def cylinder_surface(radius, height):
return pi * radius ** 2 * 2 * pi * radius * height
def cone_volume(radius, height):
return 1/3 * pi * radius ** 2 * height
def cone_surface(radius, height):
return pi * radius ** 2 + pi * radius * sqrt(height ** 2 + radius ** 2)
# main
def main():
radius = input("Radius>")
height = input("Height>")
print("Sphere volume: %d" %(sphere_volume(radius)))
print("Sphere surface: %d" %(sphere_surface(radius)))
print("Cylinder volume: %d" %(cylinder_volume(radius, height)))
print("Cylinder surface area: %d" %(cylinder_surface(radius, height)))
print("Cone volume: %d" %(cone_volume(radius, height)))
print("Cone surface: %d" %(cone_surface(radius, height)))
# PROGRAM RUN
if __name__ == "__main__":
main()
我收到错误
return 4/3 * pi * (radius ** 3)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
有人可以帮助我解决我做错的事吗?
答案 0 :(得分:5)
解析输入如下:
# main
def main():
radius = float(input("Radius>"))
height = float(input("Height>"))
它对我有用。
答案 1 :(得分:1)
错误消息
unsupported operand type(s) for ** or pow(): 'str' and 'int'
意味着你的代码告诉**操作员操作的东西,即radius和3,与**操作符不兼容。特别是将一个字符串(str)提升到一个幂是没有多大意义的,是吗?
这是因为input()返回一个字符串。
要对radius值进行数值运算,必须将字符串转换为数字。查看内置函数float(),参见https://docs.python.org/2/library/functions.html#float,当你看到其他一些内置函数时。