我将如何解决这个问题?
程序应该包含函数的定义sumTri(cutOff)
。该函数将 Tri 数字添加到总和中。
Tri 数字是每三个数字: ....只要 Tri 数字小于 cutOff,1, 4, 7, 10,
该函数就会将连续的 Tri 数字... 添加到总和中。1, 4, 7,
该函数返回这些数字的总和。
我将如何解决这个问题?
程序应该包含函数的定义sumTri(cutOff)
。该函数将 Tri 数字添加到总和中。
Tri 数字是每三个数字: ....只要 Tri 数字小于 cutOff,1, 4, 7, 10,
该函数就会将连续的 Tri 数字... 添加到总和中。1, 4, 7,
该函数返回这些数字的总和。
这很简单:
def sumTri(cutOff):
return sum(range(1,cutOff,3))
或者,当您需要它时:
def sumTri(cutOff):
sum = 0
tri = 1
while tri < cutOff:
sum += tri
tri += 3
return sum
我会试着解释一下这两种灵魂。
在第一种情况下,您使用 Python 的两个“高级”函数,它们都可以为您工作:sum
和range
. 该range(a,b,c)
函数生成一个数字列表,从a
到之间b
的步长c
。例如:
In [1]: range(1,10,3)
Out[1]: [1, 4, 7]
In [2]: range(1,22,3)
Out[2]: [1, 4, 7, 10, 13, 16, 19]
您必须在此处注意range
生成数字,直到列表中的数字小于b
,而不是小于或等于。正是您的任务所需要的。
显然计算并sum
返回它作为参数的列表中数字的总和:
In [3]: sum([1])
Out[3]: 1
In [4]: sum([1,2])
Out[4]: 3
In [5]: sum([1,2,3])
Out[5]: 6
现在您只需将这两个功能结合起来:
return sum(range(1,cutOff,3))
第二种解决方案更“低级”和“算法”。你在这里没有使用特殊的 python 函数,一切都自己做。
您使用两个变量来计算总和:
sum
-- 存储总和的变量tri
-- 逐步添加的具有当前数字值的变量当你写这样的东西时:
a = a + 5
这意味着:“现在我想a
等于a
之前加 5”或“增加a
5”。你可以写得更短:
a += 5
这两种形式是等价的。
但是你不需要简单的添加一些东西。你需要做很多次,直到事情发生。在 python 中,您可以使用while
:
while someting-is-true:
do-something
每次while
检查something-is-true
条件,当它为真时,它会发出低于while
(缩进)的命令 ie do-something
。
现在您知道了编写解决方案所需的一切:
def sumTri(cutOff):
sum = 0 # we start the sum from 0
tri = 1 # and the first number to add is 1
while tri < cutOff: # next number to add < cutOff?
sum += tri # than add it to sum
tri += 3 # and increase the number by 3
return sum # now you have the result, return it
这就是完成这项工作的功能。现在您可以使用该功能了。你是怎么做到的?
def sumTri(cutOff):
...
# anywhere in you program:
# presuming a is the cutOff
print sumTri(a)
当您想运行该函数并使用其结果时,您只需编写function_name(args)
.