Python 堆叠杯子?

2024-06-25 05:20:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个函数('def stackHeights'),在这个函数中,假设一个参数要有多个杯子,然后返回可以用这个杯子数构建的堆栈的最大高度。例如,如果您有7个杯子,您可以构建高度为3的堆栈,但是对于高度为4的堆栈,您没有足够的空间,因为底部一行只有一个杯子,您需要4个杯子。在

“提示:使用一段时间从上到下构建。在

输出:

>>> stackHeight (7) 
3
>>> stackHeight (3)
2 
>>> stackHeight (12) 
4 

这就是我现在所拥有的:

^{pr2}$

我做错什么了?代码似乎由于某种原因无法运行。请记住,我对编程还是相当陌生的,所以为集群感到抱歉。在


Tags: 函数代码参数高度堆栈def编程空间
2条回答

您所指的是一个称为Triangular Numbers的数字序列,它有一个计算第n个数字的等式:

T(n) = n(n+1)/2

使用二次公式可以将其转化为:

^{pr2}$

因此,您的代码将是:

def stackHeight(nCups):
    return ((8*nCups+1)**0.5-1) // 2

和测试:

>>> def stackHeight(nCups):
...     return ((8*nCups+1)**0.5-1)//2
...
>>> stackHeight(7)
3.0
>>> stackHeight(3)
2.0
>>> stackHeight(12)
4.0

我注意到你的代码有很多问题。首先,input()的次数太多了,input()会在等待用户输入时冻结程序。你可能想要input("string that tells the user what to put here")。另外,您有一个变量nCups,但是nCups被设置为input(),因此它完全使变量的点无用。另外,如果您希望它在您的示例中是怎样的,您不希望在循环中print()。另一件事是,当你做cups={}时,你是在把它变成一个字典,但是你以后要用一个整数作为索引,所以你需要一个list[]。在

相关问题 更多 >