我是Python的初学者。试图创建一个函数来计算形状的体积。如果形状是"球体"那么它将返回volume_sphere
。如果形状是"锥形",那么它将返回volume_cone
。我不知道为什么我得到IndexError: tuple index out of range
我的代码如下:
def calculate_volume(shape, dimension):
r = dimension[0]
h = dimension[1]
Volume_Sphere = 4 / 3 * 3.14 * r ** 3
Volume_Cone = 1 / 3 * (3.14 * r ** 2 * h)
if shape == 'sphere':
return Volume_Sphere
elif shape == 'cone':
return Volume_Cone
else:
return "invalid shape"
if __name__ == "__main__":
print(calculate_volume('sphere', (2,)))
首先,您发送的代码中的缩进不正确,请修改
代码中的问题是,在最后一行,dimension
参数,它应该是一个元组,没有两个元素。您的函数显然使用元组的第一个元素作为半径,第二个元素作为高度,并且您没有输入高度的值。
def calculate_volume(shape,dimension):
r = dimension[0]
h = dimension[1]
Volume_Sphere = 4/3*3.14*r**3
Volume_Cone = 1/3*(3.14*r**2*h)
if (shape == 'sphere'):
return Volume_Sphere
elif (shape == 'cone'):
return Volume_Cone
else:
return ("invalid shape")
if __name__ == "__main__":
print(calculate_volume('cone',(2,3)))
请注意,在最后一行中,我写的不是(2,)
,而是(2,3)
,所以我输入了高度的值,这与原始代码中的情况不同。
让我们假设calculate_volume()只关注球体和锥体。在此基础上,物体的高度只有在需要圆锥的体积时才有意义。因此我们可以这样做:-
def calculate_volume(r, h=-1):
return 1/3*(3.14*r**2*h) if h > 0 else 4/3*3.14*r**3
if __name__ == "__main__":
print(calculate_volume(2))
print(calculate_volume(2, 3))
在第一种情况下,我们得到半径为2的球体的体积在第二种情况下,我们得到半径为2,高为3的圆锥的体积