Python编写儿童球池装球数计算程序报变量未定义错误如何解决
错误原因
- 变量作用域规则限制:Python中函数内部定义的变量属于局部变量,仅在当前函数范围内生效,函数执行结束后就会被回收。你在
volume_of_ball_pit里定义的volume_pit、volume_of_ball里定义的volume_ball都属于对应函数的局部变量,balls_required函数无权直接访问,因此触发变量未定义报错。 - 没有接收函数返回值:你调用了两个体积计算函数,但没有将返回的计算结果赋值给变量,计算完成的体积值没有被保存,后续逻辑自然无法调用。
- 不符合开发规范:需求明确要求两个体积计算函数需要通过参数接收输入值,你写的函数是在内部读取用户输入,和要求不符。
- 计算公式存在错误:球池容积公式遗漏了半径的平方计算,单球体积公式遗漏了半径的三次方计算,即使变量问题修复,最终结果也会出错。
修复方案
按照需求修正后的可运行代码如下:
import math packing_density = 0.75 # 接收球池半径、高度参数,返回球池容积 def volume_of_ball_pit(radius_pit, height_pit): return math.pi * (radius_pit ** 2) * height_pit # 接收海洋球半径参数,返回单球体积 def volume_of_ball(radius_ball): return (4/3) * math.pi * (radius_ball ** 3) # 计算所需海洋球总数量 def balls_required(pit_r, pit_h, ball_r): volume_pit = volume_of_ball_pit(pit_r, pit_h) volume_ball = volume_of_ball(ball_r) # 球数量取整数 return int((volume_pit / volume_ball) * packing_density) # 代入题目指定参数输出结果 print("所需海洋球总数量:", balls_required(1, 0.2, 0.05))
运行后输出结果为900,符合计算逻辑。
内容的提问来源于stack exchange,提问作者Can't get my programs to work
相关产品推荐
相关产品推荐

