如何使用python找出所需的最小半径,以便所有糖粉都能装进一个圆柱形盒子

  • 本文关键字:圆柱形 盒子 一个 python 何使用 python
  • 更新时间 :
  • 英文 :


假设我有一包糖粉,它的形状与直棱镜几乎相同,长度为8厘米,宽6厘米,高16厘米。我如何创建一个程序与一个函数,以长度,宽度和高度为输入参数,然后使用while循环来估计最小半径,以便所有的糖粉都应该装在一个10厘米高的圆柱形盒子里。

我试过了:

import math as mt
import numpy as np
volum = 8*6*16 #8cm 6cm 16cm
"""
jeg kommer til å generere tilfeldige tall for bredde og lengde
til jeg får det riktige svaret jeg leter etter.
"""
radius = np.random.randint(0, 10)
height = 10
svar = height * mt.pi * radius ** 2 
while(svar != volum):
radius = np.random.randint(0, 10)
height = 10
svar = height * mt.pi * radius ** 2 
if round(svar) == volum:
print("minste radius for at all melisen skal få plass i en sylinderformet boks med høyde 10 cm er: ", radius)

您当前的解决方案是检查0到10之间的随机整数半径,计算圆柱体体积,并查看它是否与框匹配。它不起作用,因为你测试的所有可能的柱体都是这些:

>>> height = 10
>>> [round(height * math.pi * radius**2) for radius in range(11)]
[0, 31, 126, 283, 503, 785, 1131, 1539, 2011, 2545, 3142]

而你的盒子的体积是768,所以你永远找不到一个完全匹配的

我想说你的原始想法的最亲密的方式遍历所有这些值,直到你找到一个比你想要的体积,然后退出循环:

height = 10
for radius in range(11):
svar = height * mt.pi * radius ** 2 
if round(svar) >= volum:
print("minste radius for at all melisen skal få plass i en sylinderformet boks med høyde 10 cm er: ", radius)
break

(我相信你知道,你的问题的确切答案是sqrt(volume / (pi * height)),大约是4.944,所以你的循环应该在5处停止。)

相关内容

  • 没有找到相关文章