0

所以问题是定义这六个函数

def sphereVolume(r):
def sphereSurface(r):
def cylinderVolume(r,h):
def cylinderSurface(r,h):
def coneVolume(r,h):
def coneSurface(r,h):

然后编写一个程序,提示用户输入 r 和 h 的值,调用这六个函数,并打印结果。

我没有测试过这段代码,因为我目前在一台没有 scite 或 python 的计算机上,但是我已经在记事本上创建了这段代码。

from math import pi
def sphereVolume():
    volume1=((4/3)*pi*r)**3))
    return volume1


def sphereSurface():
    area1=(4*pi*r**2)
    return area1


def cylinderVolume():
    volume2=(pi*r**2*h)
    return volume2

def cylinderSurface():
    area2=(2*pi*r**2+2*pi*r*h)
    return area2

def coneVolume():
    volume3=((1/3)*pi*r**2*h)
    return volume3

def coneSurface():
    area3=(pi*r+pi*r**2)
    return area3

main():




def main():
    r=int (input("Enter the radius:"))
    h=int (input("Enter the heights:"))
    print ("Sphere volume:",sphereVolume(r),volume1)
    print ("Sphere Surface:",sphereSurface(r),area1)
    print ("Cylinder Volume:" , cylinderVolume(r,h),volume2)
    print ("Cylinder Surface:",cylinderSurface(r,h),area2)
    print ("Cone Volume:",coneVolume(r,h),volume3)
    print ("Cone Surface:",coneSurface(r,h),area3)

我是否正确使用了这些功能?还是有很多我需要改变的地方?

4

2 回答 2

1

您的代码中有许多语法错误:

volume1=((4/3)*pi*r)**3)) (You don't need extra bracket at the end)

main():  (You called this function before you declared it, only call it after you've declared it and given it attributes)


print ("Sphere volume:",sphereVolume(r),volume1)
    print ("Sphere Surface:",sphereSurface(r),area1)
    print ("Cylinder Volume:" , cylinderVolume(r,h),volume2)
    print ("Cylinder Surface:",cylinderSurface(r,h),area2)
    print ("Cone Volume:",coneVolume(r,h),volume3)
    print ("Cone Surface:",coneSurface(r,h),area3)

乍一看,这可能看起来都是正确的,但是对于您打印的每个函数,您都给它一组不应该存在的参数(例如sphereVolume,有参数r)。它们不应该在那里,因为您将它们编程为不接受参数,因此您应该更改函数以接受参数,否则会出现错误:

    print ("Sphere volume:",sphereVolume(r),volume1)
TypeError: sphereVolume() takes 0 positional arguments but 1 was given

所以你的函数应该是这样的:

from math import pi
def sphereVolume(r):
    volume1=((4/3)*pi*r)**3
    return volume1


def sphereSurface(r):
    area1=(4*pi*r**2)
    return area1


def cylinderVolume(r,h):
    volume2=(pi*r**2*h)
    return volume2



def cylinderSurface(r,h):
    area2=(2*pi*r**2+2*pi*r*h)
    return area2

def coneVolume(r,h):
    volume3=((1/3)*pi*r**2*h)
    return volume3

def coneSurface(r,h):
    area3=(pi*r+pi*r**2)
    return area3

您需要给它们一组参数以供使用,否则将变量 r 和 h 放在函数中是不正确的,因为 - 简单来说 - 他们没有被允许在那里。

最后,您需要删除从打印出来的函数中获得的额外变量main()。由于它们是局部变量,除非它们被返回,否则您无法访问它们。我猜你试图做的是你想要例如在这一行

print ("Sphere volume:",sphereVolume(r),volume1)

打印 的值volume1。你已经这样做了!当您volume1在函数末尾说 return 时,这意味着如果您在其他地方打印此函数,将从函数访问的唯一参数是您返回的参数,在这种情况下是volume1. 对您尝试打印的所有其他局部变量执行同样的操作,方法是删除它们。

我已经测试了这段代码,但是如果你不想看我写的所有东西,你就不必看我写的所有东西,完整的工作代码是这样的:

from math import pi
def sphereVolume(r):
    volume1=((4/3)*pi*r)**3
    return volume1


def sphereSurface(r):
    area1=(4*pi*r**2)
    return area1


def cylinderVolume(r,h):
    volume2=(pi*r**2*h)
    return volume2

def cylinderSurface(r,h):
    area2=(2*pi*r**2+2*pi*r*h)
    return area2

def coneVolume(r,h):
    volume3=((1/3)*pi*r**2*h)
    return volume3

def coneSurface(r,h):
    area3=(pi*r+pi*r**2)
    return area3






def main():
    r=int (input("Enter the radius:"))
    h=int (input("Enter the heights:"))
    print ("Sphere volume:",sphereVolume(r))
    print ("Sphere Surface:",sphereSurface(r))
    print ("Cylinder Volume:" , cylinderVolume(r,h))
    print ("Cylinder Surface:",cylinderSurface(r,h))
    print ("Cone Volume:",coneVolume(r,h))
    print ("Cone Surface:",coneSurface(r,h))

main()
于 2013-10-09T16:43:47.960 回答
0

您需要为r和的函数添加参数h

你有一个额外的父母:

volume1=((4/3)*pi*r)**3))

您需要修复:

main():
于 2013-10-09T01:45:15.783 回答