因此,对于此编码练习,我必须输入一些虚构的块,它将告诉我金字塔有多少完整的行。
因此,例如,如果我输入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/