如何解决Python计算形状体积时出现的tuple index out of range错误
错误原因
- 你触发
IndexError: tuple index out of range的核心原因是:不管传入的形状是什么类型,函数开头都会强制读取dimension元组的第2个元素(索引为1),但球不需要高度参数,你调用时传的(2,)是长度为1的元组,不存在索引为1的元素,直接访问就触发了越界报错。 - 额外的逻辑冗余问题:不管要计算哪种形状的体积,你都先把球和圆锥的体积提前算完,完全没必要消耗多余算力。
修正后代码
def calculate_volume(shape, dimension): if shape == 'sphere': # 球仅需要半径参数,只读取元组第一个元素即可 r = dimension[0] return 4 / 3 * 3.14 * r ** 3 elif shape == 'cone': # 圆锥需要半径+高度两个参数,读取元组两个元素 r, h = dimension return 1 / 3 * (3.14 * r ** 2 * h) else: return "invalid shape" if __name__ == "__main__": # 计算球体积,传长度为1的元组即可正常运行 print(calculate_volume('sphere', (2,))) # 计算圆锥体积的调用示例,需要传长度为2的元组 print(calculate_volume('cone', (2, 3)))
内容的提问来源于stack exchange,提问作者krischenyt
相关产品推荐
相关产品推荐

