因此,对于此编码练习,我必须输入一些虚构的块,它将告诉我金字塔有多少完整的行。

因此,例如,如果我输入6个方块...我希望它告诉我金字塔的高度为3。(底部3个方块,在其上方2个方块,在其上方1个方块)。

在我的脑海中,我认为这将类似于斐波那契金字塔,因此我将代码作为基础。

blocks = int(input("Enter number of blocks: "))

for i in range(blocks + 1):
    for j in range(blocks + 1):
    height = j / 2
if height % 2 == 0:
    height = height / 2

print(f"The height of the pyramid: {height}")

到目前为止,这就是我所拥有的...如果我执行6或20,它很有效,但是很显然,如果我执行1000,它不会给我想要的结果。我觉得我的代码还差得远。

最佳答案

高度为N的金字塔中有1 + 2 + ... + N块。这减少为N * (N + 1) / 2。因此,您需要找到(N^2 + N) / 2形式的最大整数,该整数小于或等于您选择的数字blocks。二次方相当简单:N^2 + N - 2 * blocks = 0,其根源于N = floor((-1 +/- sqrt(1 + 8 * blocks)) / 2)。由于blocks是一个正整数,因此负根将永远不会适用于您的情况。您可以将int用作floor,将**0.5用作sqrt以获取:

blocks = int(input("Enter number of blocks: "))
print(f'You can build a pyramid {int(0.5 * ((8 * blocks + 1)**0.5 - 1))} blocks high')

关于python - 在Python中输出金字塔的高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58292099/

10-12 20:54