面向对象的Python程序计算球体的体积和表面积

Mad*_*der 1 python class object python-3.x

编写一个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()
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误

 return 4/3 * pi * (radius ** 3)

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决我做错的事吗?

小智 5

解析输入如下:

# main
def main():
    radius = float(input("Radius>"))
    height = float(input("Height>"))
Run Code Online (Sandbox Code Playgroud)

它对我有用.