You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过while循环估算可容纳糖粉的10cm高圆柱最小半径

需求说明

现有形状近似直棱柱的糖粉,需要编写Python函数,接收直棱柱的长、宽、高作为输入参数,通过while循环估算高度固定为10cm的圆柱形盒子的最小半径,要求圆柱可以容纳全部糖粉。

原代码存在的问题
  • 使用随机整数生成半径的方式,仅能得到整数精度的结果,精度不足,还存在概率性无法命中符合条件的值导致死循环的风险
  • 没有按要求封装为接收直棱柱长宽高参数的函数
  • 循环判断逻辑错误:圆柱体积含无理数π,不可能与直棱柱体积完全相等,实际只要圆柱体积≥糖粉体积即可满足容纳要求,无需完全相等
可直接运行的实现代码
import math

def calc_min_cylinder_radius(rect_len, rect_width, rect_height, cylinder_height=10):
    # 计算糖粉总体积
    sugar_volume = rect_len * rect_width * rect_height
    # 初始化半径、计算步长(步长越小,结果精度越高)
    radius = 0.0
    step = 0.01
    # while循环递增半径,直到圆柱体积足够容纳糖粉
    while math.pi * (radius **2) * cylinder_height < sugar_volume:
        radius += step
    # 保留两位小数返回结果
    return round(radius, 2)

# 测试题目中的糖粉尺寸:长8cm、宽6cm、高16cm
min_r = calc_min_cylinder_radius(8,6,16)
print(f"高度为10cm的圆柱盒最小半径为:{min_r} cm")
代码说明
  • 函数默认圆柱高度为10cm,也可根据需求自行修改传入的圆柱高度参数
  • 步长设置为0.01,最终结果精度可达0.01cm,可根据实际需求调整步长大小控制精度
  • 测试题目中的糖粉尺寸,运行后得到的最小半径约为4.95cm,对应圆柱体积≈770cm³,可完全容纳体积为768cm³的糖粉

内容的提问来源于stack exchange,提问作者knoweldgeSeekingHuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:39:01